home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 2
/
AACD 2.iso
/
AACD
/
Magazine
/
GraphicsCards
/
StormMesa
/
src-glu
/
nurbsutl.s
< prev
next >
Wrap
Text File
|
1998-12-15
|
76KB
|
4,352 lines
; Storm C Compiler
; Work2:Mesa3/Mesa-3.0/src-glu/nurbsutl.c
mc68030
mc68881
XREF _call_user_error
XREF _gluProject
XREF _glLoadMatrixf
XREF _glPopMatrix
XREF _glPushMatrix
XREF _glViewport
XREF _glMatrixMode
XREF _glPopAttrib
XREF _glPushAttrib
XREF _glGetIntegerv
XREF _glGetDoublev
XREF _qsort
XREF _abort
XREF _malloc
XREF _free
XREF _fabs__r
XREF _sqrt__r
SECTION "_test_knot:0",CODE
;GLenum
XDEF _test_knot
_test_knot
movem.l d2-d5/a2,-(a7)
fmovem.x fp2,-(a7)
movem.l $24(a7),d4/a2
move.l $2C(a7),d5
L332
; tmp_knot=knot[0];
fmove.s (a2),fp2
; knot_mult=1;
moveq #1,d3
; for(i=1;
moveq #1,d2
bra.b L341
L333
; if(knot[i] < tmp_knot)
fmove.s 0(a2,d2.l*4),fp0
fcmp.x fp2,fp0
fboge.b L335
L334
move.l #$1879E,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d5/a2
rts
L335
; if(fabs(tmp_knot-knot[i]) > EPSILON)
fmove.x fp2,fp0
fsub.s 0(a2,d2.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fbole.b L339
L336
; if(knot_mult>order)
cmp.l d5,d3
ble.b L338
L337
move.l #$1879F,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d5/a2
rts
L338
; knot_mult=1;
moveq #1,d3
; tmp_knot=knot[i];
fmove.s 0(a2,d2.l*4),fp2
bra.b L340
L339
; ++knot_mult;
addq.l #1,d3
L340
addq.l #1,d2
L341
cmp.l d4,d2
blt.b L333
L342
moveq #0,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d5/a2
rts
SECTION "_knot_sort:0",CODE
rts
;static int
_knot_sort
fmovem.x fp2/fp3,-(a7)
move.l $20(a7),a0
move.l $1C(a7),a1
L343
; x=*((GLfloat *)a);
fmove.s (a1),fp3
; y=*((GLfloat *)b);
fmove.s (a0),fp2
; if(fabs(x-y) < EPSILON)
fmove.x fp3,fp0
fsub.x fp2,fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L345
L344
moveq #0,d0
fmovem.x (a7)+,fp2/fp3
rts
L345
; if(x > y)
fcmp.x fp2,fp3
fbole.b L347
L346
moveq #1,d0
fmovem.x (a7)+,fp2/fp3
rts
L347
moveq #-1,d0
fmovem.x (a7)+,fp2/fp3
rts
SECTION "_collect_unified_knot:0",CODE
;void
XDEF _collect_unified_knot
_collect_unified_knot
L361 EQU -$3C
link a5,#L361
movem.l d2-d7/a2-a4,-(a7)
fmovem.x fp2/fp3,-(a7)
move.l $C(a5),a0
move.l $8(a5),a4
fmove.s $14(a5),fp2
fmove.s $10(a5),fp3
L348
; src_knot=src->unified_knot;
move.l $8(a0),a2
; dest_knot=dest->unified_knot;
move.l a4,a1
move.l $8(a1),a3
; src_t_min=src->t_min;
move.l $14(a0),d1
; src_t_max=src->t_max;
move.l $18(a0),-$10(a5)
; dest_t_min=dest->t_min;
move.l a4,a0
move.l $14(a0),-$14(a5)
; dest_t_max=dest->t_max;
move.l a4,a0
move.l $18(a0),d5
; src_nknots=src->unified_nknots;
; dest_nknots=dest->unified_nknots;
move.l a4,a0
; k=new_cnt=dest_nknots;
move.l $C(a0),d6
move.l d6,d7
; for(i=src_t_min;
move.l d1,d3
bra L359
L349
; if(src_knot[i] - maximal_min_knot > -EPSILON &&
fmove.s 0(a2,d3.l*4),fp0
fsub.x fp3,fp0
fcmp.d #$.BEB0C6F7.A0B5ED8D,fp0
fbole.b L358
L350
fmove.s 0(a2,d3.l*4),fp0
fsub.x fp2,fp0
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L358
L351
; not_found_flag=GL_TRUE;
moveq #1,d4
; for(j=dest_t_min;
move.l -$14(a5),d2
bra.b L355
L352
; if(fabs(dest_knot[j]-src_knot[i]) < EPSILON)
fmove.s 0(a3,d2.l*4),fp0
fsub.s 0(a2,d3.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L354
L353
; not_found_flag=GL_FALSE;
moveq #0,d4
;
bra.b L356
L354
addq.l #1,d2
L355
cmp.l d5,d2
ble.b L352
L356
; if(not_found_flag)
tst.b d4
beq.b L358
L357
; dest_knot[k++]=src_knot[i];
move.l d6,d0
move.l d6,d1
addq.l #1,d1
move.l d1,d6
move.l 0(a2,d3.l*4),0(a3,d0.l*4)
; ++new_cnt;
move.l d7,d0
addq.l #1,d0
move.l d0,d7
; ++(dest->t_max);
move.l a4,a0
move.l $18(a0),d0
addq.l #1,d0
move.l a4,a0
move.l d0,$18(a0)
; ++(dest->delta_nknots);
move.l a4,a0
move.l $1C(a0),d0
addq.l #1,d0
move.l a4,a0
move.l d0,$1C(a0)
L358
addq.l #1,d3
L359
cmp.l -$10(a5),d3
ble L349
L360
; dest->unified_nknots=new_cnt;
move.l a4,a0
move.l d7,$C(a0)
; qsort((void *)dest_knot,(size_t)new_cnt,(size_t)sizeof(GLfloat),
move.l #_knot_sort,-(a7)
pea 4.w
move.l d7,-(a7)
move.l a3,-(a7)
jsr _qsort
add.w #$10,a7
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2-d7/a2-a4
unlk a5
rts
SECTION "_set_new_t_min_t_max:0",CODE
;static void
_set_new_t_min_t_max
L424 EQU -$1C
link a5,#L424
movem.l d2/d3/a2-a4,-(a7)
fmovem.x fp2/fp3,-(a7)
move.l $8(a5),a2
move.l $14(a5),a3
move.l $10(a5),a4
fmove.s $18(a5),fp2
fmove.s $1C(a5),fp3
L362
; if(minimal_max_knot-maximal_min_knot < EPSILON)
fmove.x fp3,fp0
fsub.x fp2,fp0
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L364
L363
; geom_knot->t_min=geom_knot->t_max=0;
clr.l $18(a2)
clr.l $14(a2)
; color_knot->t_min=color_knot->t_max=0;
move.l $C(a5),a0
clr.l $18(a0)
move.l $C(a5),a0
clr.l $14(a0)
; normal_knot->t_min=normal_knot->t_max=0;
move.l a4,a0
clr.l $18(a0)
move.l a4,a0
clr.l $14(a0)
; texture_knot->t_min=texture_knot->t_max=0;
move.l a3,a0
clr.l $18(a0)
move.l a3,a0
clr.l $14(a0)
bra L423
L364
; if(geom_knot->unified_knot!=NULL)
move.l $8(a2),a0
cmp.w #0,a0
beq.b L376
L365
; cnt=geom_knot->unified_nknots;
move.l $C(a2),d2
; for(t_min=0;
moveq #0,d3
bra.b L369
L366
; if(fabs((geom_knot->unified_knot)[t_min] - maximal_min_knot)
move.l $8(a2),a0
fmove.s 0(a0,d3.l*4),fp0
fsub.x fp2,fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L368
L367
;
bra.b L370
L368
addq.l #1,d3
L369
cmp.l d2,d3
blo.b L366
L370
; for(t_max=cnt-1;
subq.l #1,d2
bra.b L374
L371
; if(fabs((geom_knot->unified_knot)[t_max] - minimal_max_knot)
move.l $8(a2),a0
fmove.s 0(a0,d2.l*4),fp0
fsub.x fp3,fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L373
L372
;
bra.b L375
L373
subq.l #1,d2
L374
tst.l d2
bne.b L371
L375
bra.b L387
L376
; if(geom_knot->nknots)
tst.l 4(a2)
beq.b L387
L377
; cnt=geom_knot->nknots;
move.l 4(a2),d2
; for(t_min=0;
moveq #0,d3
bra.b L381
L378
; if(fabs((geom_knot->knot)[t_min] - maximal_min_knot) < EPSIL
move.l (a2),a0
fmove.s 0(a0,d3.l*4),fp0
fsub.x fp2,fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L380
L379
;
bra.b L382
L380
addq.l #1,d3
L381
cmp.l d2,d3
blo.b L378
L382
; for(t_max=cnt-1;
subq.l #1,d2
bra.b L386
L383
; if(fabs((geom_knot->knot)[t_max] - minimal_max_knot) < EPSIL
move.l (a2),a0
fmove.s 0(a0,d2.l*4),fp0
fsub.x fp3,fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L385
L384
;
bra.b L387
L385
subq.l #1,d2
L386
tst.l d2
bne.b L383
L387
; geom_knot->t_min=t_min;
move.l d3,$14(a2)
; geom_knot->t_max=t_max;
move.l d2,$18(a2)
; if(color_knot->unified_knot!=NULL)
move.l $C(a5),a1
move.l $8(a1),a0
cmp.w #0,a0
beq L399
L388
; cnt=color_knot->unified_nknots;
move.l $C(a5),a0
move.l $C(a0),d2
; for(t_min=0;
moveq #0,d3
bra.b L392
L389
; if(fabs((color_knot->unified_knot)[t_min] - maximal_min_knot)
move.l $C(a5),a1
move.l $8(a1),a0
fmove.s 0(a0,d3.l*4),fp0
fsub.x fp2,fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L391
L390
;
bra.b L393
L391
addq.l #1,d3
L392
cmp.l d2,d3
blo.b L389
L393
; for(t_max=cnt-1;
subq.l #1,d2
bra.b L397
L394
; if(fabs((color_knot->unified_knot)[t_max] - minimal_max_knot)
move.l $C(a5),a1
move.l $8(a1),a0
fmove.s 0(a0,d2.l*4),fp0
fsub.x fp3,fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L396
L395
;
bra.b L398
L396
subq.l #1,d2
L397
tst.l d2
bne.b L394
L398
; color_knot->t_min=t_min;
move.l $C(a5),a0
move.l d3,$14(a0)
; color_knot->t_max=t_max;
move.l $C(a5),a0
move.l d2,$18(a0)
L399
; if(normal_knot->unified_knot!=NULL)
move.l a4,a1
move.l $8(a1),a0
cmp.w #0,a0
beq L411
L400
; cnt=normal_knot->unified_nknots;
move.l a4,a0
move.l $C(a0),d2
; for(t_min=0;
moveq #0,d3
bra.b L404
L401
; if(fabs((normal_knot->unified_knot)[t_min] - maximal_min_kno
move.l a4,a1
move.l $8(a1),a0
fmove.s 0(a0,d3.l*4),fp0
fsub.x fp2,fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L403
L402
;
bra.b L405
L403
addq.l #1,d3
L404
cmp.l d2,d3
blo.b L401
L405
; for(t_max=cnt-1;
subq.l #1,d2
bra.b L409
L406
; if(fabs((normal_knot->unified_knot)[t_max] - minimal_max_kno
move.l a4,a1
move.l $8(a1),a0
fmove.s 0(a0,d2.l*4),fp0
fsub.x fp3,fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L408
L407
;
bra.b L410
L408
subq.l #1,d2
L409
tst.l d2
bne.b L406
L410
; normal_knot->t_min=t_min;
move.l a4,a0
move.l d3,$14(a0)
; normal_knot->t_max=t_max;
move.l a4,a0
move.l d2,$18(a0)
L411
; if(texture_knot->unified_knot!=NULL)
move.l a3,a1
move.l $8(a1),a0
cmp.w #0,a0
beq L423
L412
; cnt=texture_knot->unified_nknots;
move.l a3,a0
move.l $C(a0),d2
; for(t_min=0;
moveq #0,d3
bra.b L416
L413
; if(fabs((texture_knot->unified_knot)[t_min] - maximal_min_kn
move.l a3,a1
move.l $8(a1),a0
fmove.s 0(a0,d3.l*4),fp0
fsub.x fp2,fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L415
L414
;
bra.b L417
L415
addq.l #1,d3
L416
cmp.l d2,d3
blo.b L413
L417
; for(t_max=cnt-1;
subq.l #1,d2
bra.b L421
L418
; if(fabs((texture_knot->unified_knot)[t_max] - minimal_max_kn
move.l a3,a1
move.l $8(a1),a0
fmove.s 0(a0,d2.l*4),fp0
fsub.x fp3,fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L420
L419
;
bra.b L422
L420
subq.l #1,d2
L421
tst.l d2
bne.b L418
L422
; texture_knot->t_min=t_min;
move.l a3,a0
move.l d3,$14(a0)
; texture_knot->t_max=t_max;
move.l a3,a0
move.l d2,$18(a0)
L423
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2/d3/a2-a4
unlk a5
rts
SECTION "_select_knot_working_range:0",CODE
;GLenum
XDEF _select_knot_working_range
_select_knot_working_range
L482 EQU -$44
link a5,#L482
movem.l d2/a2-a4,-(a7)
fmovem.x fp2/fp3,-(a7)
movem.l $10(a5),a2-a4
L425
; max_nknots=geom_knot->nknots;
move.l $C(a5),a0
move.l 4(a0),d2
; if(color_knot->unified_knot)
tst.l $8(a2)
beq.b L427
L426
; max_nknots+=color_knot->nknots;
add.l 4(a2),d2
L427
; if(normal_knot->unified_knot)
move.l a3,a1
tst.l $8(a1)
beq.b L429
L428
; max_nknots+=normal_knot->nknots;
move.l a3,a0
add.l 4(a0),d2
L429
; if(texture_knot->unified_knot)
move.l a4,a1
tst.l $8(a1)
beq.b L431
L430
; max_nknots+=texture_knot->nknots;
move.l a4,a0
add.l 4(a0),d2
L431
; maximal_min_knot=(geom_knot->knot)[geom_knot->t_min];
move.l $C(a5),a1
move.l (a1),a0
move.l $C(a5),a1
move.l $14(a1),d0
fmove.s 0(a0,d0.l*4),fp3
; minimal_max_knot=(geom_knot->knot)[geom_knot->t_max];
move.l $C(a5),a1
move.l (a1),a0
move.l $C(a5),a1
move.l $18(a1),d0
fmove.s 0(a0,d0.l*4),fp2
; if(max_nknots!=geom_knot->nknots)
move.l $C(a5),a0
cmp.l 4(a0),d2
beq L481
L432
; if((geom_knot->unified_knot=
move.l d2,d0
moveq #2,d1
asl.l d1,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l $C(a5),a1
move.l d0,$8(a1)
move.l d0,a0
cmp.w #0,a0
bne.b L434
L433
; call_user_error(nobj,GLU_OUT_OF_MEMORY);
move.l #$18A26,-(a7)
move.l $8(a5),-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2/a2-a4
unlk a5
rts
L434
; geom_knot->unified_nknots=geom_knot->nknots;
move.l $C(a5),a0
move.l 4(a0),d0
move.l $C(a5),a0
move.l d0,$C(a0)
; for(i=0;
moveq #0,d0
bra.b L436
L435
; (geom_knot->unified_knot)[i]=(geom_knot->knot)[i];
move.l $C(a5),a1
move.l (a1),a0
fmove.s 0(a0,d0.l*4),fp0
move.l $C(a5),a1
move.l $8(a1),a0
fmove.s fp0,0(a0,d0.l*4)
addq.l #1,d0
L436
move.l $C(a5),a0
cmp.l 4(a0),d0
blt.b L435
L437
; if(color_knot->unified_knot)
tst.l $8(a2)
beq L447
L438
; if((color_knot->knot)[color_knot->t_min] - maximal_min_knot >
move.l $14(a2),d0
move.l (a2),a0
fmove.s 0(a0,d0.l*4),fp0
fsub.x fp3,fp0
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fbole.b L440
L439
; maximal_min_knot=(color_knot->knot)[color_knot->t_min];
move.l $14(a2),d0
move.l (a2),a0
fmove.s 0(a0,d0.l*4),fp3
L440
; if(minimal_max_knot - (color_knot->knot)[color_knot->t_max] >
move.l $18(a2),d0
move.l (a2),a0
fmove.x fp2,fp0
fsub.s 0(a0,d0.l*4),fp0
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fbole.b L442
L441
; minimal_max_knot=(color_knot->knot)[color_knot->t_max];
move.l $18(a2),d0
move.l (a2),a0
fmove.s 0(a0,d0.l*4),fp2
L442
; if((color_knot->unified_knot=
move.l d2,d0
moveq #2,d1
asl.l d1,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,$8(a2)
move.l d0,a0
cmp.w #0,a0
bne.b L444
L443
; free(geom_knot->unified_knot);
move.l $C(a5),a1
move.l $8(a1),-(a7)
jsr _free
addq.w #4,a7
; call_user_error(nobj,GLU_OUT_OF_MEMORY);
move.l #$18A26,-(a7)
move.l $8(a5),-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2/a2-a4
unlk a5
rts
L444
; color_knot->unified_nknots=color_knot->nknots;
move.l 4(a2),d0
move.l d0,$C(a2)
; for(i=0;
moveq #0,d0
bra.b L446
L445
; (color_knot->unified_knot)[i]=(color_knot->knot)[i];
move.l (a2),a0
fmove.s 0(a0,d0.l*4),fp0
move.l $8(a2),a0
fmove.s fp0,0(a0,d0.l*4)
addq.l #1,d0
L446
cmp.l 4(a2),d0
blt.b L445
L447
; if(normal_knot->unified_knot)
move.l a3,a1
tst.l $8(a1)
beq L457
L448
; if((normal_knot->knot)[normal_knot->t_min] - maximal_min_knot
move.l a3,a1
move.l (a1),a0
move.l a3,a1
move.l $14(a1),d0
fmove.s 0(a0,d0.l*4),fp0
fsub.x fp3,fp0
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fbole.b L450
L449
; maximal_min_knot=(normal_knot->knot)[normal_knot->t_min];
move.l a3,a1
move.l (a1),a0
move.l a3,a1
move.l $14(a1),d0
fmove.s 0(a0,d0.l*4),fp3
L450
; if(minimal_max_knot - (normal_knot->knot)[normal_knot->t_max]
move.l a3,a1
move.l (a1),a0
move.l a3,a1
move.l $18(a1),d0
fmove.x fp2,fp0
fsub.s 0(a0,d0.l*4),fp0
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fbole.b L452
L451
; minimal_max_knot=(normal_knot->knot)[normal_knot->t_max];
move.l a3,a1
move.l (a1),a0
move.l a3,a1
move.l $18(a1),d0
fmove.s 0(a0,d0.l*4),fp2
L452
; if((normal_knot->unified_knot=
move.l d2,d0
moveq #2,d1
asl.l d1,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l a3,a1
move.l d0,$8(a1)
move.l d0,a0
cmp.w #0,a0
bne.b L454
L453
; free(geom_knot->unified_knot);
move.l $C(a5),a1
move.l $8(a1),-(a7)
jsr _free
addq.w #4,a7
; free(color_knot->unified_knot);
move.l $8(a2),-(a7)
jsr _free
addq.w #4,a7
; call_user_error(nobj,GLU_OUT_OF_MEMORY);
move.l #$18A26,-(a7)
move.l $8(a5),-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2/a2-a4
unlk a5
rts
L454
; normal_knot->unified_nknots=normal_knot->nknots;
move.l a3,a0
move.l 4(a0),d0
move.l a3,a0
move.l d0,$C(a0)
; for(i=0;
moveq #0,d0
bra.b L456
L455
; (normal_knot->unified_knot)[i]=(normal_knot->knot)[i];
move.l a3,a1
move.l (a1),a0
fmove.s 0(a0,d0.l*4),fp0
move.l a3,a1
move.l $8(a1),a0
fmove.s fp0,0(a0,d0.l*4)
addq.l #1,d0
L456
move.l a3,a0
cmp.l 4(a0),d0
blt.b L455
L457
; if(texture_knot->unified_knot)
move.l a4,a1
tst.l $8(a1)
beq L467
L458
; if((texture_knot->knot)[texture_knot->t_min] - maximal_min_kno
move.l a4,a1
move.l (a1),a0
move.l a4,a1
move.l $14(a1),d0
fmove.s 0(a0,d0.l*4),fp0
fsub.x fp3,fp0
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fbole.b L460
L459
; maximal_min_knot=(texture_knot->knot)[texture_knot->t_min];
move.l a4,a1
move.l (a1),a0
move.l a4,a1
move.l $14(a1),d0
fmove.s 0(a0,d0.l*4),fp3
L460
; if(minimal_max_knot - (texture_knot->knot)[texture_knot->t_max
move.l a4,a1
move.l (a1),a0
move.l a4,a1
move.l $18(a1),d0
fmove.x fp2,fp0
fsub.s 0(a0,d0.l*4),fp0
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fbole.b L462
L461
; minimal_max_knot=(texture_knot->knot)[texture_knot->t_max];
move.l a4,a1
move.l (a1),a0
move.l a4,a1
move.l $18(a1),d0
fmove.s 0(a0,d0.l*4),fp2
L462
; if((texture_knot->unified_knot=
move.l d2,d0
moveq #2,d2
asl.l d2,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l a4,a1
move.l d0,$8(a1)
move.l d0,a0
cmp.w #0,a0
bne.b L464
L463
; free(geom_knot->unified_knot);
move.l $C(a5),a1
move.l $8(a1),-(a7)
jsr _free
addq.w #4,a7
; free(color_knot->unified_knot);
move.l $8(a2),-(a7)
jsr _free
addq.w #4,a7
; free(normal_knot->unified_knot);
move.l a3,a1
move.l $8(a1),-(a7)
jsr _free
addq.w #4,a7
; call_user_error(nobj,GLU_OUT_OF_MEMORY);
move.l #$18A26,-(a7)
move.l $8(a5),-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2/a2-a4
unlk a5
rts
L464
; texture_knot->unified_nknots=texture_knot->nknots;
move.l a4,a0
move.l 4(a0),d0
move.l a4,a0
move.l d0,$C(a0)
; for(i=0;
moveq #0,d0
bra.b L466
L465
; (texture_knot->unified_knot)[i]=(texture_knot->knot)[i];
move.l a4,a1
move.l (a1),a0
fmove.s 0(a0,d0.l*4),fp0
move.l a4,a1
move.l $8(a1),a0
fmove.s fp0,0(a0,d0.l*4)
addq.l #1,d0
L466
move.l a4,a0
cmp.l 4(a0),d0
blt.b L465
L467
; if(minimal_max_knot-maximal_min_knot < EPSILON)
fmove.x fp2,fp0
fsub.x fp3,fp0
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L469
L468
; geom_knot->unified_nknots=0;
move.l $C(a5),a0
clr.l $C(a0)
; color_knot->unified_nknots=0;
clr.l $C(a2)
; normal_knot->unified_nknots=0;
move.l a3,a0
clr.l $C(a0)
; texture_knot->unified_nknots=0;
move.l a4,a0
clr.l $C(a0)
bra L481
L469
; if(color_knot->unified_knot)
tst.l $8(a2)
beq.b L471
L470
; collect_unified_knot(geom_knot,color_knot,maximal_min_knot,
fmove.s fp2,-(a7)
fmove.s fp3,-(a7)
move.l a2,-(a7)
move.l $C(a5),-(a7)
jsr _collect_unified_knot
add.w #$10,a7
L471
; if(normal_knot->unified_knot)
move.l a3,a1
tst.l $8(a1)
beq.b L473
L472
; collect_unified_knot(geom_knot,normal_knot,maximal_min_knot,
fmove.s fp2,-(a7)
fmove.s fp3,-(a7)
move.l a3,-(a7)
move.l $C(a5),-(a7)
jsr _collect_unified_knot
add.w #$10,a7
L473
; if(texture_knot->unified_knot)
move.l a4,a1
tst.l $8(a1)
beq.b L475
L474
; collect_unified_knot(geom_knot,texture_knot,maximal_min_knot
fmove.s fp2,-(a7)
fmove.s fp3,-(a7)
move.l a4,-(a7)
move.l $C(a5),-(a7)
jsr _collect_unified_knot
add.w #$10,a7
L475
; if(color_knot->unified_knot)
tst.l $8(a2)
beq.b L477
L476
; collect_unified_knot(color_knot,geom_knot,maximal_min_knot,
fmove.s fp2,-(a7)
fmove.s fp3,-(a7)
move.l $C(a5),-(a7)
move.l a2,-(a7)
jsr _collect_unified_knot
add.w #$10,a7
L477
; if(normal_knot->unified_knot)
move.l a3,a1
tst.l $8(a1)
beq.b L479
L478
; collect_unified_knot(normal_knot,geom_knot,maximal_min_knot,
fmove.s fp2,-(a7)
fmove.s fp3,-(a7)
move.l $C(a5),-(a7)
move.l a3,-(a7)
jsr _collect_unified_knot
add.w #$10,a7
L479
; if(texture_knot->unified_knot)
move.l a4,a1
tst.l $8(a1)
beq.b L481
L480
; collect_unified_knot(texture_knot,geom_knot,maximal_min_knot
fmove.s fp2,-(a7)
fmove.s fp3,-(a7)
move.l $C(a5),-(a7)
move.l a4,-(a7)
jsr _collect_unified_knot
add.w #$10,a7
L481
; set_new_t_min_t_max(geom_knot,color_knot,normal_knot,texture_knot,
fmove.s fp2,-(a7)
fmove.s fp3,-(a7)
move.l a4,-(a7)
move.l a3,-(a7)
move.l a2,-(a7)
move.l $C(a5),-(a7)
jsr _set_new_t_min_t_max
add.w #$18,a7
moveq #0,d0
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2/a2-a4
unlk a5
rts
SECTION "_free_unified_knots:0",CODE
;void
XDEF _free_unified_knots
_free_unified_knots
movem.l a2-a4,-(a7)
movem.l $10(a7),a1/a4
move.l $1C(a7),a2
move.l $18(a7),a3
L483
; if(geom_knot->unified_knot)
tst.l $8(a1)
beq.b L485
L484
; free(geom_knot->unified_knot);
move.l $8(a1),-(a7)
jsr _free
addq.w #4,a7
L485
; if(color_knot->unified_knot)
move.l a4,a1
tst.l $8(a1)
beq.b L487
L486
; free(color_knot->unified_knot);
move.l a4,a1
move.l $8(a1),-(a7)
jsr _free
addq.w #4,a7
L487
; if(normal_knot->unified_knot)
move.l a3,a1
tst.l $8(a1)
beq.b L489
L488
; free(normal_knot->unified_knot);
move.l a3,a1
move.l $8(a1),-(a7)
jsr _free
addq.w #4,a7
L489
; if(texture_knot->unified_knot)
tst.l $8(a2)
beq.b L491
L490
; free(texture_knot->unified_knot);
move.l $8(a2),-(a7)
jsr _free
addq.w #4,a7
L491
movem.l (a7)+,a2-a4
rts
SECTION "_explode_knot:0",CODE
;GLenum
XDEF _explode_knot
_explode_knot
L521 EQU -$34
link a5,#L521
movem.l d2-d7/a2/a3,-(a7)
fmovem.x fp2,-(a7)
move.l $8(a5),a3
L492
; GLint nknots,n_new_knots=0;
moveq #0,d7
; if(the_knot->unified_knot)
move.l a3,a1
tst.l $8(a1)
beq.b L494
L493
; knot=the_knot->unified_knot;
move.l a3,a0
move.l $8(a0),a2
; nknots=the_knot->unified_nknots;
move.l a3,a0
move.l $C(a0),-$C(a5)
bra.b L495
L494
; knot=the_knot->knot;
move.l a3,a0
move.l (a0),a2
; nknots=the_knot->nknots;
move.l a3,a0
move.l 4(a0),-$C(a5)
L495
; ord=the_knot->order;
move.l a3,a0
move.l $10(a0),d4
; t_min=the_knot->t_min;
move.l a3,a0
move.l $14(a0),d6
; t_max=the_knot->t_max;
move.l a3,a0
move.l $18(a0),d5
; for(i=t_min;
move.l d6,d3
bra.b L503
L496
; tmp_float=knot[i];
fmove.s 0(a2,d3.l*4),fp2
; for(j=0;
moveq #0,d2
bra.b L500
L497
; if(fabs(tmp_float-knot[i+j])>EPSILON)
move.l d3,d0
add.l d2,d0
fmove.x fp2,fp0
fsub.s 0(a2,d0.l*4),fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fbole.b L499
L498
;
bra.b L502
L499
addq.l #1,d2
L500
cmp.l d4,d2
bge.b L502
L501
move.l d3,d0
add.l d2,d0
cmp.l d5,d0
ble.b L497
L502
; n_new_knots+=ord-j;
move.l d4,d0
sub.l d2,d0
move.l d7,d1
add.l d0,d1
move.l d1,d7
; i+=j;
add.l d2,d3
L503
cmp.l d5,d3
ble.b L496
L504
; if((new_knot=(GLfloat *)malloc(sizeof(GLfloat)*(nknots+n_new_knots)
move.l -$C(a5),d0
add.l d7,d0
moveq #2,d1
asl.l d1,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,a1
cmp.w #0,a1
bne.b L506
L505
move.l #$18A26,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d7/a2/a3
unlk a5
rts
L506
; for(j=0;
moveq #0,d2
bra.b L508
L507
; new_knot[j]=knot[j];
move.l 0(a2,d2.l*4),0(a1,d2.l*4)
addq.l #1,d2
L508
cmp.l d6,d2
blt.b L507
L509
; for(i=j;
move.l d2,d3
bra.b L516
L510
; tmp_float=knot[i];
fmove.s 0(a2,d3.l*4),fp2
; for(k=0;
moveq #0,d0
bra.b L514
L511
; new_knot[j++]=knot[i];
move.l d2,d1
addq.l #1,d2
move.l 0(a2,d3.l*4),0(a1,d1.l*4)
; if(tmp_float==knot[i+1])
lea 4(a2),a0
fcmp.s 0(a0,d3.l*4),fp2
fbne.b L513
L512
; i++;
addq.l #1,d3
L513
addq.l #1,d0
L514
cmp.l d4,d0
blt.b L511
L515
addq.l #1,d3
L516
cmp.l d5,d3
ble.b L510
L517
; for(i=t_max+1;
move.l d5,d3
addq.l #1,d3
bra.b L519
L518
; new_knot[j++]=knot[i];
move.l d2,d0
addq.l #1,d2
move.l 0(a2,d3.l*4),0(a1,d0.l*4)
addq.l #1,d3
L519
cmp.l -$C(a5),d3
blt.b L518
L520
; the_knot->new_knot=new_knot;
move.l a3,a0
move.l a1,$22(a0)
; the_knot->delta_nknots+=n_new_knots;
move.l a3,a0
move.l $1C(a0),d0
add.l d7,d0
move.l a3,a0
move.l d0,$1C(a0)
; the_knot->t_max+=n_new_knots;
move.l a3,a0
move.l $18(a0),d0
add.l d7,d0
move.l a3,a0
move.l d0,$18(a0)
moveq #0,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d7/a2/a3
unlk a5
rts
SECTION "_calc_alphas:0",CODE
;GLenum
XDEF _calc_alphas
_calc_alphas
L551 EQU -$50
link a5,#L551
movem.l d2-d7/a2-a4,-(a7)
fmovem.x fp2/fp3,-(a7)
L522
; knot=the_knot->knot;
move.l $8(a5),a0
move.l (a0),a2
; order=the_knot->order;
move.l $8(a5),a0
move.l $10(a0),-$1C(a5)
; new_knot=the_knot->new_knot;
move.l $8(a5),a0
move.l $22(a0),a3
; n=the_knot->nknots-the_knot->order;
move.l $8(a5),a0
move.l 4(a0),d5
move.l $8(a5),a0
sub.l $10(a0),d5
; m=n+the_knot->delta_nknots;
move.l $8(a5),a0
move.l d5,d0
add.l $1C(a0),d0
move.l d0,d7
; if((alpha=(GLfloat *)malloc(sizeof(GLfloat)*n*m))==NULL)
move.l d5,d0
moveq #2,d1
asl.l d1,d0
mulu.l d7,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,a4
move.l a4,a0
cmp.w #0,a0
bne.b L524
L523
move.l #$18A26,d0
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2-d7/a2-a4
unlk a5
rts
L524
; if((alpha_new=(GLfloat *)malloc(sizeof(GLfloat)*n*m))==NULL)
move.l d5,d0
moveq #2,d1
asl.l d1,d0
mulu.l d7,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,-$24(a5)
move.l -$24(a5),a0
cmp.w #0,a0
bne.b L526
L525
; free(alpha);
move.l a4,-(a7)
jsr _free
addq.w #4,a7
move.l #$18A26,d0
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2-d7/a2-a4
unlk a5
rts
L526
; for(j=0;
moveq #0,d3
bra.b L535
L527
; for(i=0;
moveq #0,d2
bra.b L533
L528
; if((knot[i] <= new_knot[j]) && (new_knot[j] < knot[i+1]))
fmove.s 0(a2,d2.l*4),fp1
fcmp.s 0(a3,d3.l*4),fp1
fbogt.b L531
L529
lea 4(a2),a0
fmove.s 0(a3,d3.l*4),fp1
fcmp.s 0(a0,d2.l*4),fp1
fboge.b L531
L530
; tmp_float=1.0;
fmove.s #$.3F800000,fp2
bra.b L532
L531
; tmp_float=0.0;
fmove.s #$.00000000,fp2
L532
; alpha[i+j*n]=tmp_float;
move.l d3,d0
muls.l d5,d0
add.l d2,d0
fmove.s fp2,0(a4,d0.l*4)
addq.l #1,d2
L533
cmp.l d5,d2
blt.b L528
L534
addq.l #1,d3
L535
cmp.l d7,d3
blt.b L527
L536
; for(k=1;
moveq #1,d4
bra L549
L537
; for(j=0;
moveq #0,d3
bra L547
L538
; for(i=0;
moveq #0,d2
bra L545
L539
; denom=knot[i+k]-knot[i];
move.l d2,d0
add.l d4,d0
fmove.s 0(a2,d0.l*4),fp3
fsub.s 0(a2,d2.l*4),fp3
; if(fabs(denom)<EPSILON)
fmove.x fp3,fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fboge.b L541
L540
; tmp_float=0.0;
fmove.s #$.00000000,fp2
bra.b L542
L541
; tmp_float=(new_knot[j+k]-knot[i])/denom*
move.l d3,d0
add.l d4,d0
fmove.s 0(a3,d0.l*4),fp2
fsub.s 0(a2,d2.l*4),fp2
fdiv.x fp3,fp2
move.l d3,d0
muls.l d5,d0
add.l d2,d0
fmul.s 0(a4,d0.l*4),fp2
L542
; denom=knot[i+k+1]-knot[i+1];
move.l d2,d0
add.l d4,d0
lea 4(a2),a0
fmove.s 0(a0,d0.l*4),fp3
lea 4(a2),a0
fsub.s 0(a0,d2.l*4),fp3
; if(fabs(denom)>EPSILON)
fmove.x fp3,fp0
fmove.d fp0,-(a7)
jsr _fabs__r
addq.w #$8,a7
fcmp.d #$.3EB0C6F7.A0B5ED8D,fp0
fbole.b L544
L543
; tmp_float+=(knot[i+k+1]-new_knot[j+k])/denom*
move.l d2,d0
add.l d4,d0
lea 4(a2),a0
fmove.s 0(a0,d0.l*4),fp0
move.l d3,d0
add.l d4,d0
fsub.s 0(a3,d0.l*4),fp0
fdiv.x fp3,fp0
move.l d2,d0
addq.l #1,d0
move.l d3,d1
muls.l d5,d1
add.l d1,d0
fmul.s 0(a4,d0.l*4),fp0
fadd.x fp0,fp2
L544
; alpha_new[i+j*n]=tmp_float;
move.l d3,d0
muls.l d5,d0
add.l d2,d0
move.l -$24(a5),a1
fmove.s fp2,0(a1,d0.l*4)
addq.l #1,d2
L545
cmp.l d5,d2
blt L539
L546
addq.l #1,d3
L547
cmp.l d7,d3
blt L538
L548
; tmp_alpha=alpha_new;
move.l -$24(a5),a0
; alpha_new=alpha;
move.l a4,-$24(a5)
; alpha=tmp_alpha;
move.l a0,a4
addq.l #1,d4
L549
cmp.l -$1C(a5),d4
blt L537
L550
; the_knot->alpha=alpha;
move.l $8(a5),a1
move.l a4,$26(a1)
; free(alpha_new);
move.l -$24(a5),-(a7)
jsr _free
addq.w #4,a7
moveq #0,d0
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2-d7/a2-a4
unlk a5
rts
SECTION "_calc_new_ctrl_pts:0",CODE
;GLenum
XDEF _calc_new_ctrl_pts
_calc_new_ctrl_pts
L567 EQU -$44
link a5,#L567
movem.l d2-d7/a2-a4,-(a7)
movem.l $14(a5),d2/a2
move.l $10(a5),a0
move.l $8(a5),a4
L552
; new_knot=the_knot->new_knot;
; n=the_knot->nknots-the_knot->order;
move.l 4(a0),-$18(a5)
move.l -$18(a5),d0
sub.l $10(a0),d0
move.l d0,-$18(a5)
; alpha=the_knot->alpha;
move.l $26(a0),a3
; m=the_knot->t_max+1-the_knot->t_min-the_knot->order;
move.l $18(a0),-$14(a5)
addq.l #1,-$14(a5)
move.l -$14(a5),d0
sub.l $14(a0),d0
move.l d0,-$14(a5)
move.l -$14(a5),d0
sub.l $10(a0),d0
move.l d0,-$14(a5)
; k=the_knot->t_min;
move.l $14(a0),-$C(a5)
; if((*new_ctrl=(GLfloat *)malloc(sizeof(GLfloat)*dim*m))==NULL)
move.l d2,d0
moveq #2,d1
asl.l d1,d0
mulu.l -$14(a5),d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,(a2)
move.l d0,a0
cmp.w #0,a0
bne.b L554
L553
move.l #$18A26,d0
movem.l (a7)+,d2-d7/a2-a4
unlk a5
rts
L554
; for(j=0;
moveq #0,d3
bra.b L565
L555
; for(l=0;
moveq #0,d0
bra.b L557
L556
; (*new_ctrl)[j*dim+l]=0.0;
move.l d3,d1
muls.l d2,d1
add.l d0,d1
move.l (a2),a0
clr.l 0(a0,d1.l*4)
addq.l #1,d0
L557
cmp.l d2,d0
blt.b L556
L558
; for(i=0;
moveq #0,d4
bra.b L563
L559
; index1=i+(j+k)*n;
move.l d3,d0
add.l -$C(a5),d0
muls.l -$18(a5),d0
move.l d4,d1
add.l d0,d1
move.l d1,d7
; index2=i*stride;
move.l d4,d5
muls.l $C(a5),d5
; for(l=0;
moveq #0,d0
bra.b L561
L560
; (*new_ctrl)[j*dim+l]+=alpha[index1]*ctrl[index2+l];
move.l d7,d1
fmove.s 0(a3,d1.l*4),fp1
move.l d5,d1
add.l d0,d1
fmul.s 0(a4,d1.l*4),fp1
move.l d3,d1
muls.l d2,d1
add.l d0,d1
move.l (a2),a0
lea 0(a0,d1.l*4),a0
fmove.s (a0),fp0
fadd.x fp1,fp0
fmove.s fp0,(a0)
addq.l #1,d0
L561
cmp.l d2,d0
blt.b L560
L562
addq.l #1,d4
L563
cmp.l -$18(a5),d4
blt.b L559
L564
addq.l #1,d3
L565
cmp.l -$14(a5),d3
blt L555
L566
; *ncontrol=(GLint)m;
move.l $1C(a5),a0
move.l -$14(a5),(a0)
moveq #0,d0
movem.l (a7)+,d2-d7/a2-a4
unlk a5
rts
SECTION "_calc_factor:0",CODE
; GLfloat bez_pt[4];
_calc_factor
L587 EQU -$174
link a5,#L587
movem.l d2-d6/a2,-(a7)
fmovem.x fp2/fp3/fp4/fp5,-(a7)
movem.l $10(a5),d3/d4
move.l $C(a5),d5
move.l $1C(a5),d6
move.l $8(a5),a2
fmove.s $18(a5),fp5
L568
; glGetDoublev(GL_MODELVIEW_MATRIX,model);
pea -$80(a5)
pea $BA6.w
jsr _glGetDoublev
addq.w #$8,a7
; glGetDoublev(GL_PROJECTION_MATRIX,proj);
pea -$100(a5)
pea $BA7.w
jsr _glGetDoublev
addq.w #$8,a7
; glGetIntegerv(GL_VIEWPORT,viewport);
pea -$110(a5)
pea $BA2.w
jsr _glGetIntegerv
addq.w #$8,a7
; if(dim==4)
move.l d6,d0
cmp.l #4,d0
bne L575
L569
; w=(GLdouble)pts[indx+3];
lea $C(a2),a0
fmove.s 0(a0,d3.l*4),fp0
fmove.x fp0,fp4
; x=(GLdouble)pts[indx]/w;
fmove.s 0(a2,d3.l*4),fp0
fmove.x fp0,fp2
fdiv.x fp4,fp2
; y=(GLdouble)pts[indx+1]/w;
lea 4(a2),a0
fmove.s 0(a0,d3.l*4),fp0
fmove.x fp0,fp1
fdiv.x fp4,fp1
; z=(GLdouble)pts[indx+2]/w;
lea $8(a2),a0
fmove.s 0(a0,d3.l*4),fp0
fdiv.x fp4,fp0
; gluProject(x,y,z,model,proj,viewport,&winx1,&winy1,&winz);
pea -$148(a5)
pea -$140(a5)
pea -$138(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
fmove.d fp0,-(a7)
fmove.d fp1,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
; len=0.0;
fmove.d #$.00000000.00000000,fp3
; for(i=1;
moveq #1,d2
bra L573
L570
; w=(GLdouble)pts[indx+i*stride+3];
move.l d2,d0
muls.l d4,d0
add.l d3,d0
lea $C(a2),a0
fmove.s 0(a0,d0.l*4),fp0
fmove.x fp0,fp4
; x=(GLdouble)pts[indx+i*stride]/w;
move.l d2,d0
muls.l d4,d0
add.l d3,d0
fmove.s 0(a2,d0.l*4),fp0
fmove.x fp0,fp2
fdiv.x fp4,fp2
; y=(GLdouble)pts[indx+i*stride+1]/w;
move.l d2,d0
muls.l d4,d0
add.l d3,d0
lea 4(a2),a0
fmove.s 0(a0,d0.l*4),fp0
fmove.x fp0,fp1
fdiv.x fp4,fp1
; z=(GLdouble)pts[indx+i*stride+2]/w;
move.l d2,d0
muls.l d4,d0
add.l d3,d0
lea $8(a2),a0
fmove.s 0(a0,d0.l*4),fp0
fdiv.x fp4,fp0
; if(gluProject(x,y,z,model,proj,viewport,&winx2,&winy2,&winz))
pea -$148(a5)
pea -$158(a5)
pea -$150(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
fmove.d fp0,-(a7)
fmove.d fp1,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
tst.l d0
beq.b L572
L571
; dx=winx2-winx1;
fmove.d -$150(a5),fp0
fsub.d -$138(a5),fp0
; dy=winy2-winy1;
fmove.d -$158(a5),fp1
fsub.d -$140(a5),fp1
; len+=sqrt(dx*dx+dy*dy);
fmove.x fp0,fp2
fmul.x fp0,fp2
fmove.x fp2,fp0
fmove.x fp1,fp2
fmul.x fp1,fp2
fadd.x fp2,fp0
fmove.d fp0,-(a7)
jsr _sqrt__r
addq.w #$8,a7
fadd.x fp0,fp3
L572
; winx1=winx2;
move.l -$150(a5),-$138(a5)
move.l -$14C(a5),-$134(a5)
; winy1=winy2;
move.l -$158(a5),-$140(a5)
move.l -$154(a5),-$13C(a5)
addq.l #1,d2
L573
cmp.l d5,d2
blt L570
L574
bra L586
L575
; x=(GLdouble)pts[indx];
fmove.s 0(a2,d3.l*4),fp0
fmove.x fp0,fp2
; y=(GLdouble)pts[indx+1];
lea 4(a2),a0
fmove.s 0(a0,d3.l*4),fp0
fmove.x fp0,fp1
; if(dim==2)
move.l d6,d0
cmp.l #2,d0
bne.b L577
L576
; z=0.0;
fmove.d #$.00000000.00000000,fp0
bra.b L578
L577
; z=(GLdouble)pts[indx+2];
lea $8(a2),a0
fmove.s 0(a0,d3.l*4),fp0
L578
; gluProject(x,y,z,model,proj,viewport,&winx1,&winy1,&winz);
pea -$148(a5)
pea -$140(a5)
pea -$138(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
fmove.d fp0,-(a7)
fmove.d fp1,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
; len=0.0;
fmove.d #$.00000000.00000000,fp3
; for(i=1;
moveq #1,d2
bra L585
L579
; x=(GLdouble)pts[indx+i*stride];
move.l d2,d0
muls.l d4,d0
add.l d3,d0
fmove.s 0(a2,d0.l*4),fp0
fmove.x fp0,fp2
; y=(GLdouble)pts[indx+i*stride+1];
move.l d2,d0
muls.l d4,d0
add.l d3,d0
lea 4(a2),a0
fmove.s 0(a0,d0.l*4),fp0
fmove.x fp0,fp1
; if(dim==2)
move.l d6,d0
cmp.l #2,d0
bne.b L581
L580
; z=0.0;
fmove.d #$.00000000.00000000,fp0
bra.b L582
L581
; z=(GLdouble)pts[indx+i*stride+2];
move.l d2,d0
muls.l d4,d0
add.l d3,d0
lea $8(a2),a0
fmove.s 0(a0,d0.l*4),fp0
L582
; if(gluProject(x,y,z,model,proj,viewport,&winx2,&winy2,&winz))
pea -$148(a5)
pea -$158(a5)
pea -$150(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
fmove.d fp0,-(a7)
fmove.d fp1,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
tst.l d0
beq.b L584
L583
; dx=winx2-winx1;
fmove.d -$150(a5),fp0
fsub.d -$138(a5),fp0
; dy=winy2-winy1;
fmove.d -$158(a5),fp1
fsub.d -$140(a5),fp1
; len+=sqrt(dx*dx+dy*dy);
fmove.x fp0,fp2
fmul.x fp0,fp2
fmove.x fp2,fp0
fmove.x fp1,fp2
fmul.x fp1,fp2
fadd.x fp2,fp0
fmove.d fp0,-(a7)
jsr _sqrt__r
addq.w #$8,a7
fadd.x fp0,fp3
L584
; winx1=winx2;
move.l -$150(a5),-$138(a5)
move.l -$14C(a5),-$134(a5)
; winy1=winy2;
move.l -$158(a5),-$140(a5)
move.l -$154(a5),-$13C(a5)
addq.l #1,d2
L585
cmp.l d5,d2
blt L579
L586
; len /= tolerance;
fmove.x fp5,fp0
fdiv.x fp0,fp3
fmove.l fp3,d0
addq.l #1,d0
fmovem.x (a7)+,fp2/fp3/fp4/fp5
movem.l (a7)+,d2-d6/a2
unlk a5
rts
SECTION "_bezier_curve:0",CODE
;static void
_bezier_curve
movem.l d2-d6/a2,-(a7)
fmovem.x fp2/fp3/fp4/fp5,-(a7)
movem.l $58(a7),d2/d4/d5
move.l $50(a7),a0
move.l $4C(a7),a1
fmove.s $54(a7),fp5
L588
; if(order >= 2)
cmp.l #2,d4
blo L599
L589
; bincoeff = order-1;
move.l d4,d1
subq.l #1,d1
; s = 1.0-t;
fmove.x fp5,fp0
fmove.d #$.3FF00000.00000000,fp1
fsub.x fp0,fp1
fmove.x fp1,fp0
fmove.x fp0,fp4
; for(k=0;
moveq #0,d0
bra.b L591
L590
; out[k] = s*cp[k] + bincoeff*t*cp[offset+k];
fmove.x fp4,fp1
fmul.s 0(a1,d0.l*4),fp1
fmove.l d1,fp0
fmul.x fp5,fp0
move.l d5,d3
add.l d0,d3
fmul.s 0(a1,d3.l*4),fp0
fadd.x fp0,fp1
fmove.s fp1,0(a0,d0.l*4)
addq.l #1,d0
L591
cmp.l d2,d0
blo.b L590
L592
; for(i=2, cp+=2*offset, powert=t*t;
moveq #2,d3
move.l d5,d0
moveq #1,d6
asl.l d6,d0
moveq #2,d6
asl.l d6,d0
add.l d0,a1
fmove.x fp5,fp3
fmul.x fp5,fp3
bra.b L597
L593
; bincoeff *= order-i;
move.l d4,d0
sub.l d3,d0
mulu.l d0,d1
; bincoeff /= i;
divul.l d3,d1
; for(k=0;
moveq #0,d0
bra.b L595
L594
; out[k] = s*out[k] + bincoeff*powert*cp[k];
fmove.x fp4,fp1
fmul.s 0(a0,d0.l*4),fp1
fmove.l d1,fp0
fmul.x fp3,fp0
fmul.s 0(a1,d0.l*4),fp0
fadd.x fp0,fp1
fmove.s fp1,0(a0,d0.l*4)
addq.l #1,d0
L595
cmp.l d2,d0
blo.b L594
L596
addq.l #1,d3
fmul.x fp5,fp3
move.l d5,d0
moveq #2,d6
asl.l d6,d0
add.l d0,a1
L597
cmp.l d4,d3
blo.b L593
L598
bra.b L602
L599
; for(k=0;
moveq #0,d0
bra.b L601
L600
; out[k] = cp[k];
move.l 0(a1,d0.l*4),0(a0,d0.l*4)
addq.l #1,d0
L601
cmp.l d2,d0
blo.b L600
L602
fmovem.x (a7)+,fp2/fp3/fp4/fp5
movem.l (a7)+,d2-d6/a2
rts
SECTION "_calc_parametric_factor:0",CODE
;static GLint
_calc_parametric_factor
L625 EQU -$1A8
link a5,#L625
movem.l d2-d6/a2,-(a7)
fmovem.x fp2/fp3/fp4/fp5/fp6/fp7,-(a7)
move.l $1C(a5),d2
move.l $C(a5),d4
move.l $10(a5),d5
move.l $14(a5),d6
move.l $8(a5),a2
L603
; GLdouble len=0.0
fmove.d #$.00000000.00000000,fp7
; P = 2*(order+2);
move.l d4,d0
addq.l #2,d0
move.l d0,d3
moveq #1,d0
asl.l d0,d3
; glGetDoublev(GL_MODELVIEW_MATRIX,model);
pea -$80(a5)
pea $BA6.w
jsr _glGetDoublev
addq.w #$8,a7
; glGetDoublev(GL_PROJECTION_MATRIX,proj);
pea -$100(a5)
pea $BA7.w
jsr _glGetDoublev
addq.w #$8,a7
; glGetIntegerv(GL_VIEWPORT,viewport);
pea -$110(a5)
pea $BA2.w
jsr _glGetIntegerv
addq.w #$8,a7
; z_med = (viewport[2] + viewport[3]) * 0.5;
lea -$110(a5),a0
move.l $8(a0),d0
lea -$110(a5),a0
add.l $C(a0),d0
fmove.l d0,fp5
fmul.d #$.3FE00000.00000000,fp5
; switch(dim)
cmp.l #3,d2
beq L610
bgt.b L626
cmp.l #2,d2
beq L616
bra L622
L626
cmp.l #4,d2
beq.b L604
bra L622
;
L604
; for(i=1;
moveq #1,d2
bra L608
L605
; bezier_curve(pts+indx, bez_pt, (GLfloat)i/(GLfloat)P, 4,
move.l d6,-(a7)
move.l d4,-(a7)
pea 4.w
fmove.l d2,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
pea -$190(a5)
pea 0(a2,d5.l*4)
jsr _bezier_curve
add.w #$18,a7
; w = (GLdouble)bez_pt[3];
lea -$190(a5),a0
fmove.s $C(a0),fp0
; x = (GLdouble)bez_pt[0] / w;
fmove.s -$190(a5),fp1
fmove.x fp1,fp2
fdiv.x fp0,fp2
; y = (GLdouble)bez_pt[1] / w;
lea -$190(a5),a0
fmove.s 4(a0),fp1
fmove.x fp1,fp4
fdiv.x fp0,fp4
; z = (GLdouble)bez_pt[2] / w;
lea -$190(a5),a0
fmove.s $8(a0),fp1
fmove.x fp1,fp3
fdiv.x fp0,fp3
; gluProject(x,y,z,model,proj,viewport,&x3,&y3,&z3);
pea -$178(a5)
pea -$170(a5)
pea -$168(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
fmove.d fp3,-(a7)
fmove.d fp4,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
; z3 *= z_med;
fmove.d -$178(a5),fp0
fmul.x fp5,fp0
fmove.d fp0,-$178(a5)
; bezier_curve(pts+indx, bez_pt, (GLfloat)(i-1)/(GLfloat)P, 4,
move.l d6,-(a7)
move.l d4,-(a7)
pea 4.w
move.l d2,d0
subq.l #1,d0
fmove.l d0,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
pea -$190(a5)
pea 0(a2,d5.l*4)
jsr _bezier_curve
add.w #$18,a7
; w = (GLdouble)bez_pt[3];
lea -$190(a5),a0
fmove.s $C(a0),fp0
; x = (GLdouble)bez_pt[0] / w;
fmove.s -$190(a5),fp1
fmove.x fp1,fp2
fdiv.x fp0,fp2
; y = (GLdouble)bez_pt[1] / w;
lea -$190(a5),a0
fmove.s 4(a0),fp1
fmove.x fp1,fp4
fdiv.x fp0,fp4
; z = (GLdouble)bez_pt[2] / w;
lea -$190(a5),a0
fmove.s $8(a0),fp1
fmove.x fp1,fp3
fdiv.x fp0,fp3
; gluProject(x,y,z,model,proj,viewport,&x1,&y1,&z1);
pea -$148(a5)
pea -$140(a5)
pea -$138(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
fmove.d fp3,-(a7)
fmove.d fp4,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
; z1 *= z_med;
fmove.d -$148(a5),fp0
fmul.x fp5,fp0
fmove.d fp0,-$148(a5)
; bezier_curve(pts+indx, bez_pt, (GLfloat)(i+1)/(GLfloat)P, 4,
move.l d6,-(a7)
move.l d4,-(a7)
pea 4.w
move.l d2,d0
addq.l #1,d0
fmove.l d0,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
pea -$190(a5)
pea 0(a2,d5.l*4)
jsr _bezier_curve
add.w #$18,a7
; w = (GLdouble)bez_pt[3];
lea -$190(a5),a0
fmove.s $C(a0),fp0
; x = (GLdouble)bez_pt[0] / w;
fmove.s -$190(a5),fp1
fmove.x fp1,fp2
fdiv.x fp0,fp2
; y = (GLdouble)bez_pt[1] / w;
lea -$190(a5),a0
fmove.s 4(a0),fp1
fmove.x fp1,fp4
fdiv.x fp0,fp4
; z = (GLdouble)bez_pt[2] / w;
lea -$190(a5),a0
fmove.s $8(a0),fp1
fmove.x fp1,fp3
fdiv.x fp0,fp3
; gluProject(x,y,z,model,proj,viewport,&x2,&y2,&z2);
pea -$160(a5)
pea -$158(a5)
pea -$150(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
fmove.d fp3,-(a7)
fmove.d fp4,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
; z2 *= z_med;
fmove.d -$160(a5),fp0
fmul.x fp5,fp0
fmove.d fp0,-$160(a5)
; x = x2-x1;
fmove.d -$150(a5),fp2
fsub.d -$138(a5),fp2
; y = y2-y1;
fmove.d -$158(a5),fp4
fsub.d -$140(a5),fp4
; z = z2-z1;
fmove.d -$160(a5),fp3
fsub.d -$148(a5),fp3
; tmp = sqrt(x*x+y*y+z*z);
fmove.x fp2,fp0
fmul.x fp2,fp0
fmove.x fp4,fp1
fmul.x fp4,fp1
fadd.x fp1,fp0
fmove.x fp3,fp1
fmul.x fp3,fp1
fadd.x fp1,fp0
fmove.d fp0,-(a7)
jsr _sqrt__r
addq.w #$8,a7
; x /= tmp;
fdiv.x fp0,fp2
; y /= tmp;
fdiv.x fp0,fp4
; z /= tmp;
fdiv.x fp0,fp3
; tmp = x3*x+y3*y+z3*z-x1*x-y1*y-z1*z;
fmove.d -$168(a5),fp0
fmul.x fp2,fp0
fmove.d -$170(a5),fp1
fmul.x fp4,fp1
fadd.x fp1,fp0
fmove.d -$178(a5),fp1
fmul.x fp3,fp1
fadd.x fp1,fp0
fmove.d -$138(a5),fp1
fmul.x fp2,fp1
fsub.x fp1,fp0
fmove.d -$140(a5),fp1
fmul.x fp4,fp1
fsub.x fp1,fp0
fmove.d -$148(a5),fp1
fmul.x fp3,fp1
fsub.x fp1,fp0
; x = x1+x*tmp-x3;
fmul.x fp0,fp2
fadd.d -$138(a5),fp2
fsub.d -$168(a5),fp2
; y = y1+y*tmp-y3;
fmul.x fp0,fp4
fadd.d -$140(a5),fp4
fsub.d -$170(a5),fp4
; z = z1+z*tmp-z3;
fmul.x fp0,fp3
fadd.d -$148(a5),fp3
fsub.d -$178(a5),fp3
; tmp = sqrt(x*x+y*y+z*z);
fmove.x fp2,fp0
fmul.x fp2,fp0
fmove.x fp0,fp2
fmove.x fp4,fp0
fmul.x fp4,fp0
fadd.x fp0,fp2
fmove.x fp3,fp0
fmul.x fp3,fp0
fadd.x fp0,fp2
fmove.d fp2,-(a7)
jsr _sqrt__r
addq.w #$8,a7
; if(tmp > len)
fcmp.x fp7,fp0
fbole.b L607
L606
; len = tmp;
fmove.d fp0,fp7
L607
addq.l #1,d2
L608
cmp.l d3,d2
blt L605
L609
;
bra L622
L610
; for(i=1;
moveq #1,d2
bra L614
L611
; bezier_curve(pts+indx, bez_pt, (GLfloat)i/(GLfloat)P, 3,
move.l d6,-(a7)
move.l d4,-(a7)
pea 3.w
fmove.l d2,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
pea -$190(a5)
pea 0(a2,d5.l*4)
jsr _bezier_curve
add.w #$18,a7
; x = (GLdouble)bez_pt[0];
fmove.s -$190(a5),fp0
fmove.x fp0,fp2
; y = (GLdouble)bez_pt[1];
lea -$190(a5),a0
fmove.s 4(a0),fp0
fmove.x fp0,fp4
; z = (GLdouble)bez_pt[2];
lea -$190(a5),a0
fmove.s $8(a0),fp0
fmove.x fp0,fp3
; gluProject(x,y,z,model,proj,viewport,&x3,&y3,&z3);
pea -$178(a5)
pea -$170(a5)
pea -$168(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
fmove.d fp3,-(a7)
fmove.d fp4,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
; z3 *= z_med;
fmove.d -$178(a5),fp0
fmul.x fp5,fp0
fmove.d fp0,-$178(a5)
; bezier_curve(pts+indx, bez_pt, (GLfloat)(i-1)/(GLfloat)P, 3,
move.l d6,-(a7)
move.l d4,-(a7)
pea 3.w
move.l d2,d0
subq.l #1,d0
fmove.l d0,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
pea -$190(a5)
pea 0(a2,d5.l*4)
jsr _bezier_curve
add.w #$18,a7
; x = (GLdouble)bez_pt[0];
fmove.s -$190(a5),fp0
fmove.x fp0,fp2
; y = (GLdouble)bez_pt[1];
lea -$190(a5),a0
fmove.s 4(a0),fp0
fmove.x fp0,fp4
; z = (GLdouble)bez_pt[2];
lea -$190(a5),a0
fmove.s $8(a0),fp0
fmove.x fp0,fp3
; gluProject(x,y,z,model,proj,viewport,&x1,&y1,&z1);
pea -$148(a5)
pea -$140(a5)
pea -$138(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
fmove.d fp3,-(a7)
fmove.d fp4,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
; z1 *= z_med;
fmove.d -$148(a5),fp0
fmul.x fp5,fp0
fmove.d fp0,-$148(a5)
; bezier_curve(pts+indx, bez_pt, (GLfloat)(i+1)/(GLfloat)P, 3,
move.l d6,-(a7)
move.l d4,-(a7)
pea 3.w
move.l d2,d0
addq.l #1,d0
fmove.l d0,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
pea -$190(a5)
pea 0(a2,d5.l*4)
jsr _bezier_curve
add.w #$18,a7
; x = (GLdouble)bez_pt[0];
fmove.s -$190(a5),fp0
fmove.x fp0,fp2
; y = (GLdouble)bez_pt[1];
lea -$190(a5),a0
fmove.s 4(a0),fp0
fmove.x fp0,fp4
; z = (GLdouble)bez_pt[2];
lea -$190(a5),a0
fmove.s $8(a0),fp0
fmove.x fp0,fp3
; gluProject(x,y,z,model,proj,viewport,&x2,&y2,&z2);
pea -$160(a5)
pea -$158(a5)
pea -$150(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
fmove.d fp3,-(a7)
fmove.d fp4,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
; z2 *= z_med;
fmove.d -$160(a5),fp0
fmul.x fp5,fp0
fmove.d fp0,-$160(a5)
; x = x2-x1;
fmove.d -$150(a5),fp2
fsub.d -$138(a5),fp2
; y = y2-y1;
fmove.d -$158(a5),fp4
fsub.d -$140(a5),fp4
; z = z2-z1;
fmove.d -$160(a5),fp3
fsub.d -$148(a5),fp3
; tmp = sqrt(x*x+y*y+z*z);
fmove.x fp2,fp0
fmul.x fp2,fp0
fmove.x fp4,fp1
fmul.x fp4,fp1
fadd.x fp1,fp0
fmove.x fp3,fp1
fmul.x fp3,fp1
fadd.x fp1,fp0
fmove.d fp0,-(a7)
jsr _sqrt__r
addq.w #$8,a7
; x /= tmp;
fdiv.x fp0,fp2
; y /= tmp;
fdiv.x fp0,fp4
; z /= tmp;
fdiv.x fp0,fp3
; tmp = x3*x+y3*y+z3*z-x1*x-y1*y-z1*z;
fmove.d -$168(a5),fp0
fmul.x fp2,fp0
fmove.d -$170(a5),fp1
fmul.x fp4,fp1
fadd.x fp1,fp0
fmove.d -$178(a5),fp1
fmul.x fp3,fp1
fadd.x fp1,fp0
fmove.d -$138(a5),fp1
fmul.x fp2,fp1
fsub.x fp1,fp0
fmove.d -$140(a5),fp1
fmul.x fp4,fp1
fsub.x fp1,fp0
fmove.d -$148(a5),fp1
fmul.x fp3,fp1
fsub.x fp1,fp0
; x = x1+x*tmp-x3;
fmul.x fp0,fp2
fadd.d -$138(a5),fp2
fsub.d -$168(a5),fp2
; y = y1+y*tmp-y3;
fmul.x fp0,fp4
fadd.d -$140(a5),fp4
fsub.d -$170(a5),fp4
; z = z1+z*tmp-z3;
fmul.x fp0,fp3
fadd.d -$148(a5),fp3
fsub.d -$178(a5),fp3
; tmp = sqrt(x*x+y*y+z*z);
fmove.x fp2,fp0
fmul.x fp2,fp0
fmove.x fp0,fp2
fmove.x fp4,fp0
fmul.x fp4,fp0
fadd.x fp0,fp2
fmove.x fp3,fp0
fmul.x fp3,fp0
fadd.x fp0,fp2
fmove.d fp2,-(a7)
jsr _sqrt__r
addq.w #$8,a7
; if(tmp > len)
fcmp.x fp7,fp0
fbole.b L613
L612
; len = tmp;
fmove.d fp0,fp7
L613
addq.l #1,d2
L614
cmp.l d3,d2
blt L611
L615
;
bra L622
L616
; for(i=1;
moveq #1,d2
bra L620
L617
; bezier_curve(pts+indx, bez_pt, (GLfloat)i/(GLfloat)P, 2,
move.l d6,-(a7)
move.l d4,-(a7)
pea 2.w
fmove.l d2,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
pea -$190(a5)
pea 0(a2,d5.l*4)
jsr _bezier_curve
add.w #$18,a7
; x = (GLdouble)bez_pt[0];
fmove.s -$190(a5),fp0
fmove.x fp0,fp2
; y = (GLdouble)bez_pt[1];
lea -$190(a5),a0
fmove.s 4(a0),fp0
fmove.x fp0,fp4
; z = 0.0;
; gluProject(x,y,z,model,proj,viewport,&x3,&y3,&z3);
pea -$178(a5)
pea -$170(a5)
pea -$168(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
clr.l -(a7)
clr.l -(a7)
fmove.d fp4,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
; z3 *= z_med;
fmove.d -$178(a5),fp0
fmul.x fp5,fp0
fmove.d fp0,-$178(a5)
; bezier_curve(pts+indx, bez_pt, (GLfloat)(i-1)/(GLfloat)P, 2,
move.l d6,-(a7)
move.l d4,-(a7)
pea 2.w
move.l d2,d0
subq.l #1,d0
fmove.l d0,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
pea -$190(a5)
pea 0(a2,d5.l*4)
jsr _bezier_curve
add.w #$18,a7
; x = (GLdouble)bez_pt[0];
fmove.s -$190(a5),fp0
fmove.x fp0,fp2
; y = (GLdouble)bez_pt[1];
lea -$190(a5),a0
fmove.s 4(a0),fp0
fmove.x fp0,fp4
; z = 0.0;
; gluProject(x,y,z,model,proj,viewport,&x1,&y1,&z1);
pea -$148(a5)
pea -$140(a5)
pea -$138(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
clr.l -(a7)
clr.l -(a7)
fmove.d fp4,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
; z1 *= z_med;
fmove.d -$148(a5),fp0
fmul.x fp5,fp0
fmove.d fp0,-$148(a5)
; bezier_curve(pts+indx, bez_pt, (GLfloat)(i+1)/(GLfloat)P, 2,
move.l d6,-(a7)
move.l d4,-(a7)
pea 2.w
move.l d2,d0
addq.l #1,d0
fmove.l d0,fp0
fmove.l d3,fp1
fdiv.x fp1,fp0
fmove.s fp0,-(a7)
pea -$190(a5)
pea 0(a2,d5.l*4)
jsr _bezier_curve
add.w #$18,a7
; x = (GLdouble)bez_pt[0];
fmove.s -$190(a5),fp0
fmove.x fp0,fp2
; y = (GLdouble)bez_pt[1];
lea -$190(a5),a0
fmove.s 4(a0),fp0
fmove.x fp0,fp4
; z = 0.0;
; gluProject(x,y,z,model,proj,viewport,&x2,&y2,&z2);
pea -$160(a5)
pea -$158(a5)
pea -$150(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
clr.l -(a7)
clr.l -(a7)
fmove.d fp4,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
; z2 *= z_med;
fmove.d -$160(a5),fp0
fmul.x fp5,fp0
fmove.d fp0,-$160(a5)
; x = x2-x1;
fmove.d -$150(a5),fp2
fsub.d -$138(a5),fp2
; y = y2-y1;
fmove.d -$158(a5),fp4
fsub.d -$140(a5),fp4
; z = z2-z1;
fmove.d -$160(a5),fp3
fsub.d -$148(a5),fp3
; tmp = sqrt(x*x+y*y+z*z);
fmove.x fp2,fp0
fmul.x fp2,fp0
fmove.x fp4,fp1
fmul.x fp4,fp1
fadd.x fp1,fp0
fmove.x fp3,fp1
fmul.x fp3,fp1
fadd.x fp1,fp0
fmove.d fp0,-(a7)
jsr _sqrt__r
addq.w #$8,a7
; x /= tmp;
fdiv.x fp0,fp2
; y /= tmp;
fdiv.x fp0,fp4
; z /= tmp;
fdiv.x fp0,fp3
; tmp = x3*x+y3*y+z3*z-x1*x-y1*y-z1*z;
fmove.d -$168(a5),fp0
fmul.x fp2,fp0
fmove.d -$170(a5),fp1
fmul.x fp4,fp1
fadd.x fp1,fp0
fmove.d -$178(a5),fp1
fmul.x fp3,fp1
fadd.x fp1,fp0
fmove.d -$138(a5),fp1
fmul.x fp2,fp1
fsub.x fp1,fp0
fmove.d -$140(a5),fp1
fmul.x fp4,fp1
fsub.x fp1,fp0
fmove.d -$148(a5),fp1
fmul.x fp3,fp1
fsub.x fp1,fp0
; x = x1+x*tmp-x3;
fmul.x fp0,fp2
fadd.d -$138(a5),fp2
fsub.d -$168(a5),fp2
; y = y1+y*tmp-y3;
fmul.x fp0,fp4
fadd.d -$140(a5),fp4
fsub.d -$170(a5),fp4
; z = z1+z*tmp-z3;
fmul.x fp0,fp3
fadd.d -$148(a5),fp3
fsub.d -$178(a5),fp3
; tmp = sqrt(x*x+y*y+z*z);
fmove.x fp2,fp0
fmul.x fp2,fp0
fmove.x fp0,fp2
fmove.x fp4,fp0
fmul.x fp4,fp0
fadd.x fp0,fp2
fmove.x fp3,fp0
fmul.x fp3,fp0
fadd.x fp0,fp2
fmove.d fp2,-(a7)
jsr _sqrt__r
addq.w #$8,a7
; if(tmp > len)
fcmp.x fp7,fp0
fbole.b L619
L618
; len = tmp;
fmove.d fp0,fp7
L619
addq.l #1,d2
L620
cmp.l d3,d2
blt L617
L621
;
L622
; if(len < tolerance)
fmove.s $18(a5),fp0
fmove.x fp7,fp1
fcmp.x fp0,fp1
fboge.b L624
L623
move.l d4,d0
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
movem.l (a7)+,d2-d6/a2
unlk a5
rts
L624
fmove.s $18(a5),fp0
fmove.x fp7,fp1
fdiv.x fp0,fp1
fmove.d fp1,-(a7)
jsr _sqrt__r
addq.w #$8,a7
addq.l #2,d4
fmove.l d4,fp1
fmul.x fp1,fp0
fadd.d #$.3FF00000.00000000,fp0
fmove.l fp0,d0
fmovem.x (a7)+,fp2/fp3/fp4/fp5/fp6/fp7
movem.l (a7)+,d2-d6/a2
unlk a5
rts
SECTION "_calc_sampling_3D:0",CODE
;static GLenum
_calc_sampling_3D
L654 EQU -$60
link a5,#L654
movem.l d2-d7/a2-a4,-(a7)
fmovem.x fp2,-(a7)
move.l $10(a5),d5
move.l $1C(a5),a3
move.l $20(a5),a4
fmove.s $C(a5),fp2
L627
; ufactor_cnt=new_ctrl->s_bezier_cnt;
move.l $8(a5),a0
move.l $60(a0),-$10(a5)
; vfactor_cnt=new_ctrl->t_bezier_cnt;
move.l $8(a5),a0
move.l $64(a0),-$14(a5)
; if((*ufactors=(GLint *)malloc(sizeof(GLint)*ufactor_cnt*3))
move.l -$10(a5),d0
moveq #2,d1
asl.l d1,d0
mulu.l #3,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l a3,a1
move.l d0,(a1)
move.l d0,a0
cmp.w #0,a0
bne.b L629
L628
move.l #$18A26,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d7/a2-a4
unlk a5
rts
L629
; if((*vfactors=(GLint *)malloc(sizeof(GLint)*vfactor_cnt*3))
move.l -$14(a5),d0
moveq #2,d1
asl.l d1,d0
mulu.l #3,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l a4,a1
move.l d0,(a1)
move.l d0,a0
cmp.w #0,a0
bne.b L631
L630
; free(*ufactors);
move.l a3,a1
move.l (a1),-(a7)
jsr _free
addq.w #4,a7
move.l #$18A26,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d7/a2-a4
unlk a5
rts
L631
; ctrl=new_ctrl->geom_ctrl;
move.l $8(a5),a0
move.l (a0),a2
; offset1=new_ctrl->geom_t_stride*vorder;
move.l $8(a5),a0
move.l $8(a0),-$18(a5)
move.l -$18(a5),d0
muls.l $18(a5),d0
move.l d0,-$18(a5)
; offset2=new_ctrl->geom_s_stride*uorder;
move.l $8(a5),a0
move.l 4(a0),d0
muls.l $14(a5),d0
move.l d0,d7
; for(j=0;
moveq #0,d3
bra L641
L632
; *(*vfactors+j*3+1)=tmp_factor1=calc_factor(ctrl,vorder,
move.l d5,-(a7)
fmove.s fp2,-(a7)
move.l d5,-(a7)
move.l d3,d0
muls.l -$18(a5),d0
move.l d0,-(a7)
move.l $18(a5),-(a7)
move.l a2,-(a7)
jsr _calc_factor
add.w #$18,a7
move.l d0,d4
move.l a4,a1
move.l d3,d0
muls.l #3,d0
move.l (a1),a0
lea 0(a0,d0.l*4),a0
move.l d4,4(a0)
; for(i=1;
moveq #1,d2
bra.b L636
L633
; tmp_factor2=calc_factor(ctrl,vorder,
move.l d5,-(a7)
fmove.s fp2,-(a7)
move.l d5,-(a7)
move.l d3,d0
muls.l -$18(a5),d0
move.l d2,d1
muls.l d7,d1
add.l d1,d0
move.l d0,-(a7)
move.l $18(a5),-(a7)
move.l a2,-(a7)
jsr _calc_factor
add.w #$18,a7
; if(tmp_factor2>tmp_factor1)
cmp.l d4,d0
ble.b L635
L634
; tmp_factor1=tmp_factor2;
move.l d0,d4
L635
addq.l #1,d2
L636
cmp.l -$10(a5),d2
blt.b L633
L637
; j*offset2,offset3,tolerance,dim);
move.l d5,-(a7)
fmove.s fp2,-(a7)
move.l d5,-(a7)
move.l d3,d0
muls.l -$18(a5),d0
muls.l d7,d2
add.l d2,d0
move.l $8(a5),a0
sub.l 4(a0),d0
move.l d0,-(a7)
move.l $18(a5),-(a7)
move.l a2,-(a7)
jsr _calc_factor
add.w #$18,a7
move.l a4,a1
move.l d3,d1
muls.l #3,d1
move.l (a1),a0
lea 0(a0,d1.l*4),a0
move.l d0,$8(a0)
; if(tmp_factor2>tmp_factor1)
cmp.l d4,d0
ble.b L639
L638
; *(*vfactors+j*3)=tmp_factor2;
move.l a4,a1
move.l d3,d1
muls.l #3,d1
move.l (a1),a0
move.l d0,0(a0,d1.l*4)
bra.b L640
L639
; *(*vfactors+j*3)=tmp_factor1;
move.l a4,a1
move.l d3,d0
muls.l #3,d0
move.l (a1),a0
move.l d4,0(a0,d0.l*4)
L640
addq.l #1,d3
L641
cmp.l -$14(a5),d3
blt L632
L642
; offset3=new_ctrl->geom_s_stride;
move.l $8(a5),a0
move.l 4(a0),-$20(a5)
; offset2=new_ctrl->geom_s_stride*uorder;
move.l $8(a5),a0
move.l 4(a0),d0
muls.l $14(a5),d0
move.l d0,d7
; for(j=0;
moveq #0,d3
bra L652
L643
; *(*ufactors+j*3+1)=tmp_factor1=calc_factor(ctrl,uorder,
move.l d5,-(a7)
fmove.s fp2,-(a7)
move.l -$20(a5),-(a7)
move.l d3,d0
muls.l d7,d0
move.l d0,-(a7)
move.l $14(a5),-(a7)
move.l a2,-(a7)
jsr _calc_factor
add.w #$18,a7
move.l d0,d4
move.l a3,a1
move.l d3,d0
muls.l #3,d0
move.l (a1),a0
lea 0(a0,d0.l*4),a0
move.l d4,4(a0)
; for(i=1;
moveq #1,d2
bra.b L647
L644
; tmp_factor2=calc_factor(ctrl,uorder,
move.l d5,-(a7)
fmove.s fp2,-(a7)
move.l -$20(a5),-(a7)
move.l d3,d0
muls.l d7,d0
move.l d2,d1
muls.l -$18(a5),d1
add.l d1,d0
move.l d0,-(a7)
move.l $14(a5),-(a7)
move.l a2,-(a7)
jsr _calc_factor
add.w #$18,a7
; if(tmp_factor2>tmp_factor1)
cmp.l d4,d0
ble.b L646
L645
; tmp_factor1=tmp_factor2;
move.l d0,d4
L646
addq.l #1,d2
L647
cmp.l -$14(a5),d2
blt.b L644
L648
; *(*ufactors+j*3+2)=tmp_factor2=calc_factor(ctrl,uorder,
move.l d5,-(a7)
fmove.s fp2,-(a7)
move.l -$20(a5),-(a7)
move.l d3,d0
muls.l d7,d0
muls.l -$18(a5),d2
add.l d2,d0
move.l $8(a5),a0
sub.l $8(a0),d0
move.l d0,-(a7)
move.l $14(a5),-(a7)
move.l a2,-(a7)
jsr _calc_factor
add.w #$18,a7
move.l a3,a1
move.l d3,d1
muls.l #3,d1
move.l (a1),a0
lea 0(a0,d1.l*4),a0
move.l d0,$8(a0)
; if(tmp_factor2>tmp_factor1)
cmp.l d4,d0
ble.b L650
L649
; *(*ufactors+j*3)=tmp_factor2;
move.l a3,a1
move.l d3,d1
muls.l #3,d1
move.l (a1),a0
move.l d0,0(a0,d1.l*4)
bra.b L651
L650
; *(*ufactors+j*3)=tmp_factor1;
move.l a3,a1
move.l d3,d0
muls.l #3,d0
move.l (a1),a0
move.l d4,0(a0,d0.l*4)
L651
addq.l #1,d3
L652
cmp.l -$10(a5),d3
blt L643
L653
moveq #0,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d7/a2-a4
unlk a5
rts
SECTION "_calc_sampling_param_3D:0",CODE
;static GLenum
_calc_sampling_param_3D
L682 EQU -$60
link a5,#L682
movem.l d2-d7/a2-a4,-(a7)
fmovem.x fp2,-(a7)
move.l $10(a5),d5
move.l $1C(a5),a3
move.l $20(a5),a4
fmove.s $C(a5),fp2
L655
; ufactor_cnt=new_ctrl->s_bezier_cnt;
move.l $8(a5),a0
move.l $60(a0),-$10(a5)
; vfactor_cnt=new_ctrl->t_bezier_cnt;
move.l $8(a5),a0
move.l $64(a0),-$14(a5)
; if((*ufactors=(GLint *)malloc(sizeof(GLint)*ufactor_cnt*3))
move.l -$10(a5),d0
moveq #2,d1
asl.l d1,d0
mulu.l #3,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l a3,a1
move.l d0,(a1)
move.l d0,a0
cmp.w #0,a0
bne.b L657
L656
move.l #$18A26,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d7/a2-a4
unlk a5
rts
L657
; if((*vfactors=(GLint *)malloc(sizeof(GLint)*vfactor_cnt*3))
move.l -$14(a5),d0
moveq #2,d1
asl.l d1,d0
mulu.l #3,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l a4,a1
move.l d0,(a1)
move.l d0,a0
cmp.w #0,a0
bne.b L659
L658
; free(*ufactors);
move.l a3,a1
move.l (a1),-(a7)
jsr _free
addq.w #4,a7
move.l #$18A26,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d7/a2-a4
unlk a5
rts
L659
; ctrl=new_ctrl->geom_ctrl;
move.l $8(a5),a0
move.l (a0),a2
; offset1=new_ctrl->geom_t_stride*vorder;
move.l $8(a5),a0
move.l $8(a0),-$18(a5)
move.l -$18(a5),d0
muls.l $18(a5),d0
move.l d0,-$18(a5)
; offset2=new_ctrl->geom_s_stride*uorder;
move.l $8(a5),a0
move.l 4(a0),d0
muls.l $14(a5),d0
move.l d0,d7
; for(j=0;
moveq #0,d3
bra L669
L660
; *(*vfactors+j*3+1)=tmp_factor1=calc_parametric_factor(ctrl,vorde
move.l d5,-(a7)
fmove.s fp2,-(a7)
move.l d5,-(a7)
move.l d3,d0
muls.l -$18(a5),d0
move.l d0,-(a7)
move.l $18(a5),-(a7)
move.l a2,-(a7)
jsr _calc_parametric_factor
add.w #$18,a7
move.l d0,d4
move.l a4,a1
move.l d3,d0
muls.l #3,d0
move.l (a1),a0
lea 0(a0,d0.l*4),a0
move.l d4,4(a0)
; for(i=1;
moveq #1,d2
bra.b L664
L661
; tmp_factor2=calc_parametric_factor(ctrl,vorder,
move.l d5,-(a7)
fmove.s fp2,-(a7)
move.l d5,-(a7)
move.l d3,d0
muls.l -$18(a5),d0
move.l d2,d1
muls.l d7,d1
add.l d1,d0
move.l d0,-(a7)
move.l $18(a5),-(a7)
move.l a2,-(a7)
jsr _calc_parametric_factor
add.w #$18,a7
; if(tmp_factor2>tmp_factor1)
cmp.l d4,d0
ble.b L663
L662
; tmp_factor1=tmp_factor2;
move.l d0,d4
L663
addq.l #1,d2
L664
cmp.l -$10(a5),d2
blt.b L661
L665
; *(*vfactors+j*3+2)=tmp_factor2=calc_parametric_factor(ctrl,vorde
move.l d5,-(a7)
fmove.s fp2,-(a7)
move.l d5,-(a7)
move.l d3,d0
muls.l -$18(a5),d0
muls.l d7,d2
add.l d2,d0
move.l $8(a5),a0
sub.l 4(a0),d0
move.l d0,-(a7)
move.l $18(a5),-(a7)
move.l a2,-(a7)
jsr _calc_parametric_factor
add.w #$18,a7
move.l a4,a1
move.l d3,d1
muls.l #3,d1
move.l (a1),a0
lea 0(a0,d1.l*4),a0
move.l d0,$8(a0)
; if(tmp_factor2>tmp_factor1)
cmp.l d4,d0
ble.b L667
L666
; *(*vfactors+j*3)=tmp_factor2;
move.l a4,a1
move.l d3,d1
muls.l #3,d1
move.l (a1),a0
move.l d0,0(a0,d1.l*4)
bra.b L668
L667
; *(*vfactors+j*3)=tmp_factor1;
move.l a4,a1
move.l d3,d0
muls.l #3,d0
move.l (a1),a0
move.l d4,0(a0,d0.l*4)
L668
addq.l #1,d3
L669
cmp.l -$14(a5),d3
blt L660
L670
; offset3=new_ctrl->geom_s_stride;
move.l $8(a5),a0
move.l 4(a0),-$20(a5)
; offset2=new_ctrl->geom_s_stride*uorder;
move.l $8(a5),a0
move.l 4(a0),d0
muls.l $14(a5),d0
move.l d0,d7
; for(j=0;
moveq #0,d3
bra L680
L671
; *(*ufactors+j*3+1)=tmp_factor1=calc_parametric_factor(ctrl,uorde
move.l d5,-(a7)
fmove.s fp2,-(a7)
move.l -$20(a5),-(a7)
move.l d3,d0
muls.l d7,d0
move.l d0,-(a7)
move.l $14(a5),-(a7)
move.l a2,-(a7)
jsr _calc_parametric_factor
add.w #$18,a7
move.l d0,d4
move.l a3,a1
move.l d3,d0
muls.l #3,d0
move.l (a1),a0
lea 0(a0,d0.l*4),a0
move.l d4,4(a0)
; for(i=1;
moveq #1,d2
bra.b L675
L672
; tmp_factor2=calc_parametric_factor(ctrl,uorder,
move.l d5,-(a7)
fmove.s fp2,-(a7)
move.l -$20(a5),-(a7)
move.l d3,d0
muls.l d7,d0
move.l d2,d1
muls.l -$18(a5),d1
add.l d1,d0
move.l d0,-(a7)
move.l $14(a5),-(a7)
move.l a2,-(a7)
jsr _calc_parametric_factor
add.w #$18,a7
; if(tmp_factor2>tmp_factor1)
cmp.l d4,d0
ble.b L674
L673
; tmp_factor1=tmp_factor2;
move.l d0,d4
L674
addq.l #1,d2
L675
cmp.l -$14(a5),d2
blt.b L672
L676
; *(*ufactors+j*3+2)=tmp_factor2=calc_parametric_factor(ctrl,uorde
move.l d5,-(a7)
fmove.s fp2,-(a7)
move.l -$20(a5),-(a7)
move.l d3,d0
muls.l d7,d0
muls.l -$18(a5),d2
add.l d2,d0
move.l $8(a5),a0
sub.l $8(a0),d0
move.l d0,-(a7)
move.l $14(a5),-(a7)
move.l a2,-(a7)
jsr _calc_parametric_factor
add.w #$18,a7
move.l a3,a1
move.l d3,d1
muls.l #3,d1
move.l (a1),a0
lea 0(a0,d1.l*4),a0
move.l d0,$8(a0)
; if(tmp_factor2>tmp_factor1)
cmp.l d4,d0
ble.b L678
L677
; *(*ufactors+j*3)=tmp_factor2;
move.l a3,a1
move.l d3,d1
muls.l #3,d1
move.l (a1),a0
move.l d0,0(a0,d1.l*4)
bra.b L679
L678
; *(*ufactors+j*3)=tmp_factor1;
move.l a3,a1
move.l d3,d0
muls.l #3,d0
move.l (a1),a0
move.l d4,0(a0,d0.l*4)
L679
addq.l #1,d3
L680
cmp.l -$10(a5),d3
blt L671
L681
moveq #0,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d7/a2-a4
unlk a5
rts
SECTION "_calc_sampling_2D:0",CODE
;static GLenum
_calc_sampling_2D
movem.l d2-d6/a2/a3,-(a7)
fmovem.x fp2,-(a7)
movem.l $30(a7),d0/d5
movem.l $3C(a7),d3/a2
move.l $2C(a7),a3
fmove.s $38(a7),fp2
L683
; factor_cnt=cnt/order;
move.l d0,d4
divsl.l d5,d4
; if((*factors=(GLint *)malloc(sizeof(GLint)*factor_cnt))==NULL)
move.l d4,d0
moveq #2,d1
asl.l d1,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,(a2)
move.l d0,a0
cmp.w #0,a0
bne.b L685
L684
move.l #$18A26,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d6/a2/a3
rts
L685
; offset=order*dim;
move.l d5,d0
muls.l d3,d0
move.l d0,d6
; for(i=0;
moveq #0,d2
bra.b L690
L686
; tmp_factor=calc_factor(ctrl,order,i*offset,dim,tolerance,dim);
move.l d3,-(a7)
fmove.s fp2,-(a7)
move.l d3,-(a7)
move.l d2,d0
muls.l d6,d0
move.l d0,-(a7)
move.l d5,-(a7)
move.l a3,-(a7)
jsr _calc_factor
add.w #$18,a7
; if(tmp_factor == 0)
tst.l d0
bne.b L688
L687
; (*factors)[i]=1;
move.l (a2),a0
move.l #1,0(a0,d2.l*4)
bra.b L689
L688
; (*factors)[i]=tmp_factor;
move.l (a2),a0
move.l d0,0(a0,d2.l*4)
L689
addq.l #1,d2
L690
cmp.l d4,d2
blt.b L686
L691
moveq #0,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d6/a2/a3
rts
SECTION "_set_sampling_and_culling:0",CODE
;static void
_set_sampling_and_culling
L698 EQU -$14
link a5,#L698
move.l a2,-(a7)
move.l $8(a5),a2
L692
; if(nobj->auto_load_matrix==GL_FALSE)
tst.b $12(a2)
bne L697
L693
; glPushAttrib( (GLbitfield) (GL_VIEWPORT_BIT | GL_TRANSFORM_BIT));
pea $1800.w
jsr _glPushAttrib
addq.w #4,a7
; for(i=0;
moveq #0,d0
bra.b L695
L694
; m[i]=nobj->sampling_matrices.viewport[i];
lea $94(a2),a0
fmove.s 0(a0,d0.l*4),fp0
lea -$14(a5),a0
fmove.s fp0,0(a0,d0.l*4)
addq.l #1,d0
L695
cmp.l #4,d0
blt.b L694
L696
; glViewport(m[0],m[1],m[2],m[3]);
lea -$14(a5),a0
fmove.s $C(a0),fp0
fmove.l fp0,d0
move.l d0,-(a7)
lea -$14(a5),a0
fmove.s $8(a0),fp0
fmove.l fp0,d0
move.l d0,-(a7)
lea -$14(a5),a0
fmove.s 4(a0),fp0
fmove.l fp0,d0
move.l d0,-(a7)
fmove.s -$14(a5),fp0
fmove.l fp0,d0
move.l d0,-(a7)
jsr _glViewport
add.w #$10,a7
; glMatrixMode(GL_PROJECTION);
pea $1701.w
jsr _glMatrixMode
addq.w #4,a7
; glPushMatrix();
jsr _glPushMatrix
; glLoadMatrixf(nobj->sampling_matrices.proj);
pea $54(a2)
jsr _glLoadMatrixf
addq.w #4,a7
; glMatrixMode(GL_MODELVIEW);
pea $1700.w
jsr _glMatrixMode
addq.w #4,a7
; glPushMatrix();
jsr _glPushMatrix
; glLoadMatrixf(nobj->sampling_matrices.model);
pea $14(a2)
jsr _glLoadMatrixf
addq.w #4,a7
L697
move.l (a7)+,a2
unlk a5
rts
SECTION "_revert_sampling_and_culling:0",CODE
;static void
_revert_sampling_and_culling
move.l 4(a7),a0
L699
; if(nobj->auto_load_matrix==GL_FALSE)
tst.b $12(a0)
bne.b L701
L700
; glMatrixMode(GL_MODELVIEW);
pea $1700.w
jsr _glMatrixMode
addq.w #4,a7
; glPopMatrix();
jsr _glPopMatrix
; glMatrixMode(GL_PROJECTION);
pea $1701.w
jsr _glMatrixMode
addq.w #4,a7
; glPopMatrix();
jsr _glPopMatrix
; glPopAttrib();
jsr _glPopAttrib
L701
rts
SECTION "_glu_do_sampling_3D:0",CODE
;GLenum
XDEF _glu_do_sampling_3D
_glu_do_sampling_3D
L705 EQU -$8
link a5,#L705
movem.l d2/a2-a4,-(a7)
move.l $8(a5),a2
move.l $14(a5),a3
move.l $10(a5),a4
L702
; *sfactors=NULL;
move.l a4,a1
clr.l (a1)
; *tfactors=NULL;
move.l a3,a1
clr.l (a1)
; dim=nobj->surface.geom.dim;
move.l $DC(a2),d2
; set_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _set_sampling_and_culling
addq.w #4,a7
; if((err=calc_sampling_3D(new_ctrl,nobj->sampling_tolerance,dim,
move.l a3,-(a7)
move.l a4,-(a7)
move.l $D8(a2),-(a7)
move.l $D4(a2),-(a7)
move.l d2,-(a7)
move.l $A8(a2),-(a7)
move.l $C(a5),-(a7)
jsr _calc_sampling_3D
add.w #$1C,a7
move.l d0,d2
cmp.l #$18707,d2
bne.b L704
L703
; revert_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _revert_sampling_and_culling
addq.w #4,a7
; call_user_error(nobj,err);
move.l d2,-(a7)
move.l a2,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/a2-a4
unlk a5
rts
L704
; revert_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _revert_sampling_and_culling
addq.w #4,a7
moveq #0,d0
movem.l (a7)+,d2/a2-a4
unlk a5
rts
SECTION "_glu_do_sampling_uv:0",CODE
;GLenum
XDEF _glu_do_sampling_uv
_glu_do_sampling_uv
movem.l d2-d6/a2-a4,-(a7)
movem.l $28(a7),a0/a2/a3
move.l $24(a7),a4
L706
; s_cnt = new_ctrl->s_bezier_cnt;
move.l $60(a0),d5
; t_cnt = new_ctrl->t_bezier_cnt;
move.l $64(a0),d4
; *sfactors=NULL;
clr.l (a2)
; *tfactors=NULL;
move.l a3,a1
clr.l (a1)
; if((*sfactors=(GLint *)malloc(sizeof(GLint)*s_cnt*3))
move.l d5,d0
moveq #2,d1
asl.l d1,d0
mulu.l #3,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,(a2)
move.l d0,a0
cmp.w #0,a0
bne.b L708
L707
move.l #$18A26,d0
movem.l (a7)+,d2-d6/a2-a4
rts
L708
; if((*tfactors=(GLint *)malloc(sizeof(GLint)*t_cnt*3))
move.l d4,d0
moveq #2,d1
asl.l d1,d0
mulu.l #3,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l a3,a1
move.l d0,(a1)
move.l d0,a0
cmp.w #0,a0
bne.b L710
L709
; free(*sfactors);
move.l (a2),-(a7)
jsr _free
addq.w #4,a7
move.l #$18A26,d0
movem.l (a7)+,d2-d6/a2-a4
rts
L710
; u_steps = nobj->u_step;
move.l a4,a0
move.l $B0(a0),d2
; v_steps = nobj->v_step;
move.l a4,a0
move.l $B4(a0),d1
; for(i=0;
moveq #0,d0
bra.b L712
L711
; *(*sfactors+i*3) = u_steps;
move.l d0,d3
muls.l #3,d3
move.l (a2),a0
move.l d2,0(a0,d3.l*4)
; *(*sfactors+i*3+1) = u_steps;
move.l d0,d3
muls.l #3,d3
move.l (a2),a0
lea 0(a0,d3.l*4),a0
move.l d2,4(a0)
; *(*sfactors+i*3+2) = u_steps;
move.l d0,d3
muls.l #3,d3
move.l (a2),a0
lea 0(a0,d3.l*4),a0
move.l d2,$8(a0)
addq.l #1,d0
L712
cmp.l d5,d0
blt.b L711
L713
; for(i=0;
moveq #0,d0
bra.b L715
L714
; *(*tfactors+i*3) = v_steps;
move.l a3,a1
move.l d0,d2
muls.l #3,d2
move.l (a1),a0
move.l d1,0(a0,d2.l*4)
; *(*tfactors+i*3+1) = v_steps;
move.l a3,a1
move.l d0,d2
muls.l #3,d2
move.l (a1),a0
lea 0(a0,d2.l*4),a0
move.l d1,4(a0)
; *(*tfactors+i*3+2) = v_steps;
move.l a3,a1
move.l d0,d2
muls.l #3,d2
move.l (a1),a0
lea 0(a0,d2.l*4),a0
move.l d1,$8(a0)
addq.l #1,d0
L715
cmp.l d4,d0
blt.b L714
L716
moveq #0,d0
movem.l (a7)+,d2-d6/a2-a4
rts
SECTION "_glu_do_sampling_param_3D:0",CODE
;GLenum
XDEF _glu_do_sampling_param_3D
_glu_do_sampling_param_3D
L720 EQU -$8
link a5,#L720
movem.l d2/a2-a4,-(a7)
move.l $8(a5),a2
move.l $14(a5),a3
move.l $10(a5),a4
L717
; *sfactors=NULL;
move.l a4,a1
clr.l (a1)
; *tfactors=NULL;
move.l a3,a1
clr.l (a1)
; dim=nobj->surface.geom.dim;
move.l $DC(a2),d2
; set_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _set_sampling_and_culling
addq.w #4,a7
; if((err=calc_sampling_param_3D(new_ctrl,nobj->parametric_tolerance
move.l a3,-(a7)
move.l a4,-(a7)
move.l $D8(a2),-(a7)
move.l $D4(a2),-(a7)
move.l d2,-(a7)
move.l $AC(a2),-(a7)
move.l $C(a5),-(a7)
jsr _calc_sampling_param_3D
add.w #$1C,a7
move.l d0,d2
cmp.l #$18707,d2
bne.b L719
L718
; revert_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _revert_sampling_and_culling
addq.w #4,a7
; call_user_error(nobj,err);
move.l d2,-(a7)
move.l a2,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/a2-a4
unlk a5
rts
L719
; revert_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _revert_sampling_and_culling
addq.w #4,a7
moveq #0,d0
movem.l (a7)+,d2/a2-a4
unlk a5
rts
SECTION "_glu_do_sampling_2D:0",CODE
;GLenum
XDEF _glu_do_sampling_2D
_glu_do_sampling_2D
movem.l d2-d4/a2-a4,-(a7)
movem.l $24(a7),d2-d4/a4
movem.l $1C(a7),a2/a3
L721
; set_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _set_sampling_and_culling
addq.w #4,a7
; err=calc_sampling_2D(ctrl,cnt,order,nobj->sampling_tolerance,dim,
move.l a4,-(a7)
move.l d4,-(a7)
move.l $A8(a2),-(a7)
move.l d3,-(a7)
move.l d2,-(a7)
move.l a3,-(a7)
jsr _calc_sampling_2D
add.w #$18,a7
move.l d0,d2
; revert_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _revert_sampling_and_culling
addq.w #4,a7
move.l d2,d0
movem.l (a7)+,d2-d4/a2-a4
rts
SECTION "_glu_do_sampling_u:0",CODE
;GLenum
XDEF _glu_do_sampling_u
_glu_do_sampling_u
movem.l d2/d3/a2/a3,-(a7)
move.l $20(a7),d0
move.l $1C(a7),d2
move.l $28(a7),a2
move.l $14(a7),a3
L722
; cnt /= order;
divsl.l d0,d2
; if((*factors=(GLint *)malloc(sizeof(GLint)*cnt))
move.l d2,d0
moveq #2,d1
asl.l d1,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,(a2)
move.l d0,a0
cmp.w #0,a0
bne.b L724
L723
move.l #$18A26,d0
movem.l (a7)+,d2/d3/a2/a3
rts
L724
; u_steps = nobj->u_step;
move.l a3,a0
move.l $B0(a0),d1
; for(i=0;
moveq #0,d0
bra.b L726
L725
; (*factors)[i] = u_steps;
move.l (a2),a0
move.l d1,0(a0,d0.l*4)
addq.l #1,d0
L726
cmp.l d2,d0
blt.b L725
L727
moveq #0,d0
movem.l (a7)+,d2/d3/a2/a3
rts
SECTION "_glu_do_sampling_param_2D:0",CODE
;GLenum
XDEF _glu_do_sampling_param_2D
_glu_do_sampling_param_2D
movem.l d2-d5/a2-a4,-(a7)
fmovem.x fp2,-(a7)
movem.l $3C(a7),d3/a2
movem.l $34(a7),d4/d5
move.l $30(a7),a3
move.l $2C(a7),a4
L728
; set_sampling_and_culling(nobj);
move.l a4,-(a7)
jsr _set_sampling_and_culling
addq.w #4,a7
; tolerance = nobj->parametric_tolerance;
move.l a4,a0
fmove.s $AC(a0),fp2
; cnt /= order;
divsl.l d5,d4
; if((*factors=(GLint *)malloc(sizeof(GLint)*cnt))
move.l d4,d0
moveq #2,d1
asl.l d1,d0
move.l d0,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,(a2)
move.l d0,a0
cmp.w #0,a0
bne.b L730
L729
; revert_sampling_and_culling(nobj);
move.l a4,-(a7)
jsr _revert_sampling_and_culling
addq.w #4,a7
move.l #$18A26,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d5/a2-a4
rts
L730
; u_steps = nobj->u_step;
; for(i=0;
moveq #0,d2
bra.b L732
L731
; (*factors)[i] = calc_parametric_factor(ctrl,order,0,
move.l d3,-(a7)
fmove.s fp2,-(a7)
move.l d3,-(a7)
clr.l -(a7)
move.l d5,-(a7)
move.l a3,-(a7)
jsr _calc_parametric_factor
add.w #$18,a7
move.l (a2),a0
move.l d0,0(a0,d2.l*4)
addq.l #1,d2
L732
cmp.l d4,d2
blt.b L731
L733
; revert_sampling_and_culling(nobj);
move.l a4,-(a7)
jsr _revert_sampling_and_culling
addq.w #4,a7
moveq #0,d0
fmovem.x (a7)+,fp2
movem.l (a7)+,d2-d5/a2-a4
rts
SECTION "_glu_do_sampling_crv:0",CODE
;lling_test_3D(GLU
XDEF _glu_do_sampling_crv
_glu_do_sampling_crv
movem.l d2/d3/a2/a3,-(a7)
movem.l $1C(a7),d0-d2/a0
move.l $18(a7),a1
move.l $14(a7),a2
L734
; *factors=NULL;
clr.l (a0)
; switch(nobj->sampling_method)
move.l $A4(a2),d3
cmp.l #$18778,d3
beq L741
bgt.b L746
cmp.l #$18777,d3
beq.b L735
bra L744
L746
cmp.l #$18779,d3
beq.b L738
bra L744
;
L735
; if((err=glu_do_sampling_2D(nobj,ctrl,cnt,order,dim,factors))!=
move.l a0,-(a7)
move.l d2,-(a7)
move.l d1,-(a7)
move.l d0,-(a7)
move.l a1,-(a7)
move.l a2,-(a7)
jsr _glu_do_sampling_2D
add.w #$18,a7
tst.l d0
beq.b L737
L736
; call_user_error(nobj,err);
move.l d0,-(a7)
move.l a2,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/d3/a2/a3
rts
L737
;
bra.b L745
L738
; if((err=glu_do_sampling_u(nobj,ctrl,cnt,order,dim,factors))!=
move.l a0,-(a7)
move.l d2,-(a7)
move.l d1,-(a7)
move.l d0,-(a7)
move.l a1,-(a7)
move.l a2,-(a7)
jsr _glu_do_sampling_u
add.w #$18,a7
tst.l d0
beq.b L740
L739
; call_user_error(nobj,err);
move.l d0,-(a7)
move.l a2,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/d3/a2/a3
rts
L740
;
bra.b L745
L741
; if((err=glu_do_sampling_param_2D(nobj,ctrl,cnt,order,dim,facto
move.l a0,-(a7)
move.l d2,-(a7)
move.l d1,-(a7)
move.l d0,-(a7)
move.l a1,-(a7)
move.l a2,-(a7)
jsr _glu_do_sampling_param_2D
add.w #$18,a7
tst.l d0
beq.b L743
L742
; call_user_error(nobj,err);
move.l d0,-(a7)
move.l a2,-(a7)
jsr _call_user_error
addq.w #$8,a7
move.l #$18707,d0
movem.l (a7)+,d2/d3/a2/a3
rts
L743
;
bra.b L745
L744
; abort();
jsr _abort
L745
moveq #0,d0
movem.l (a7)+,d2/d3/a2/a3
rts
SECTION "_point_in_viewport:0",CODE
;static GLboolean
_point_in_viewport
L756 EQU -$148
link a5,#L756
movem.l d2/a2,-(a7)
fmovem.x fp2/fp3,-(a7)
move.l $C(a5),d2
move.l $8(a5),a2
L747
; glGetDoublev(GL_MODELVIEW_MATRIX,model);
pea -$80(a5)
pea $BA6.w
jsr _glGetDoublev
addq.w #$8,a7
; glGetDoublev(GL_PROJECTION_MATRIX,proj);
pea -$100(a5)
pea $BA7.w
jsr _glGetDoublev
addq.w #$8,a7
; glGetIntegerv(GL_VIEWPORT,viewport);
pea -$110(a5)
pea $BA2.w
jsr _glGetIntegerv
addq.w #$8,a7
; if(dim==3)
cmp.l #3,d2
bne.b L749
L748
; x=(GLdouble)pt[0];
fmove.s (a2),fp0
fmove.x fp0,fp2
; y=(GLdouble)pt[1];
fmove.s 4(a2),fp0
fmove.x fp0,fp1
; z=(GLdouble)pt[2];
fmove.s $8(a2),fp0
; gluProject(x,y,z,model,proj,viewport,&winx,&winy,&winz);
pea -$148(a5)
pea -$140(a5)
pea -$138(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
fmove.d fp0,-(a7)
fmove.d fp1,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
bra.b L750
L749
; w=(GLdouble)pt[3];
fmove.s $C(a2),fp0
fmove.x fp0,fp3
; x=(GLdouble)pt[0]/w;
fmove.s (a2),fp0
fmove.x fp0,fp2
fdiv.x fp3,fp2
; y=(GLdouble)pt[1]/w;
fmove.s 4(a2),fp0
fmove.x fp0,fp1
fdiv.x fp3,fp1
; z=(GLdouble)pt[2]/w;
fmove.s $8(a2),fp0
fdiv.x fp3,fp0
; gluProject(x,y,z,model,proj,viewport,&winx,&winy,&winz);
pea -$148(a5)
pea -$140(a5)
pea -$138(a5)
pea -$110(a5)
pea -$100(a5)
pea -$80(a5)
fmove.d fp0,-(a7)
fmove.d fp1,-(a7)
fmove.d fp2,-(a7)
jsr _gluProject
add.w #$30,a7
L750
; if((GLint)winx >= viewport[0] && (GLint)winx < viewport[2] &&
fmove.d -$138(a5),fp0
fmove.l fp0,d1
cmp.l -$110(a5),d1
blt.b L755
L751
fmove.d -$138(a5),fp0
fmove.l fp0,d1
lea -$110(a5),a0
cmp.l $8(a0),d1
bge.b L755
L752
fmove.d -$140(a5),fp0
fmove.l fp0,d1
lea -$110(a5),a0
cmp.l 4(a0),d1
blt.b L755
L753
fmove.d -$140(a5),fp0
fmove.l fp0,d1
lea -$110(a5),a0
cmp.l $C(a0),d1
bge.b L755
L754
moveq #1,d0
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2/a2
unlk a5
rts
L755
moveq #0,d0
fmovem.x (a7)+,fp2/fp3
movem.l (a7)+,d2/a2
unlk a5
rts
SECTION "_fine_culling_test_3D:0",CODE
;GLboolean
XDEF _fine_culling_test_3D
_fine_culling_test_3D
L778 EQU -$8
link a5,#L778
movem.l d2-d7/a2/a3,-(a7)
move.l $20(a5),d4
move.l $14(a5),d5
move.l $1C(a5),d6
move.l $18(a5),d7
move.l $8(a5),a2
move.l $C(a5),a3
L757
; if(nobj->culling==GL_FALSE)
tst.b (a2)
bne.b L759
L758
moveq #0,d0
movem.l (a7)+,d2-d7/a2/a3
unlk a5
rts
L759
; set_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _set_sampling_and_culling
addq.w #4,a7
; if(dim==3)
cmp.l #3,d4
bne.b L769
L760
; for(i=0;
moveq #0,d3
bra.b L767
L761
; for(j=0;
moveq #0,d2
bra.b L765
L762
; if(point_in_viewport(pts+i*s_stride+j*t_stride,dim))
move.l d4,-(a7)
move.l d3,d0
muls.l d7,d0
lea 0(a3,d0.l*4),a0
move.l d2,d0
muls.l d6,d0
pea 0(a0,d0.l*4)
jsr _point_in_viewport
addq.w #$8,a7
tst.b d0
beq.b L764
L763
; revert_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _revert_sampling_and_culling
addq.w #4,a7
moveq #0,d0
movem.l (a7)+,d2-d7/a2/a3
unlk a5
rts
L764
addq.l #1,d2
L765
cmp.l d5,d2
blt.b L762
L766
addq.l #1,d3
L767
cmp.l $10(a5),d3
blt.b L761
L768
; return
bra.b L777
L769
; for(i=0;
moveq #0,d3
bra.b L776
L770
; for(j=0;
moveq #0,d2
bra.b L774
L771
; if(point_in_viewport(pts+i*s_stride+j*t_stride,dim))
move.l d4,-(a7)
move.l d3,d0
muls.l d7,d0
lea 0(a3,d0.l*4),a0
move.l d2,d0
muls.l d6,d0
pea 0(a0,d0.l*4)
jsr _point_in_viewport
addq.w #$8,a7
tst.b d0
beq.b L773
L772
; revert_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _revert_sampling_and_culling
addq.w #4,a7
moveq #0,d0
movem.l (a7)+,d2-d7/a2/a3
unlk a5
rts
L773
addq.l #1,d2
L774
cmp.l d5,d2
blt.b L771
L775
addq.l #1,d3
L776
cmp.l $10(a5),d3
blt.b L770
L777
; revert_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _revert_sampling_and_culling
addq.w #4,a7
moveq #1,d0
movem.l (a7)+,d2-d7/a2/a3
unlk a5
rts
SECTION "_fine_culling_test_2D:0",CODE
;GLboolean
XDEF _fine_culling_test_2D
_fine_culling_test_2D
movem.l d2-d5/a2/a3,-(a7)
move.l $2C(a7),d3
move.l $24(a7),d4
move.l $28(a7),d5
move.l $1C(a7),a2
move.l $20(a7),a3
L779
; if(nobj->culling==GL_FALSE)
tst.b (a2)
bne.b L781
L780
moveq #0,d0
movem.l (a7)+,d2-d5/a2/a3
rts
L781
; set_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _set_sampling_and_culling
addq.w #4,a7
; if(dim==3)
cmp.l #3,d3
bne.b L788
L782
; for(i=0;
moveq #0,d2
bra.b L786
L783
; if(point_in_viewport(pts+i*stride,dim))
move.l d3,-(a7)
move.l d2,d0
muls.l d5,d0
pea 0(a3,d0.l*4)
jsr _point_in_viewport
addq.w #$8,a7
tst.b d0
beq.b L785
L784
; revert_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _revert_sampling_and_culling
addq.w #4,a7
moveq #0,d0
movem.l (a7)+,d2-d5/a2/a3
rts
L785
addq.l #1,d2
L786
cmp.l d4,d2
blt.b L783
L787
; return
bra.b L793
L788
; for(i=0;
moveq #0,d2
bra.b L792
L789
; if(point_in_viewport(pts+i*stride,dim))
move.l d3,-(a7)
move.l d2,d0
muls.l d5,d0
pea 0(a3,d0.l*4)
jsr _point_in_viewport
addq.w #$8,a7
tst.b d0
beq.b L791
L790
; revert_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _revert_sampling_and_culling
addq.w #4,a7
moveq #0,d0
movem.l (a7)+,d2-d5/a2/a3
rts
L791
addq.l #1,d2
L792
cmp.l d4,d2
blt.b L789
L793
; revert_sampling_and_culling(nobj);
move.l a2,-(a7)
jsr _revert_sampling_and_culling
addq.w #4,a7
moveq #1,d0
movem.l (a7)+,d2-d5/a2/a3
rts
END